OS Xでは、Bashが予期せず完了する〜

OS Xでは、Bashが予期せず完了する〜

~TabTabbashコマンドプロンプトを打ったが、予期しない完了結果が出ました。

まず、ディレクトリ内のすべての人/Usersとそれ以上のように見えます。

それから私は「ホーム」ディレクトリを持つ人/etc/password、またはおそらくその人を逆引きしていると思いました/var/empty。これは正しいようです。

私が質問したのは本物持続的でなぜこれは動作するように動作します。

答え1

確認するのに便利なOSXシステムはありませんが、すべての* nixで~fooこれはユーザーのホームディレクトリの略語ですfoo。たとえば、このコマンドは私のユーザーの$HOMEcd ~別々のホームディレクトリに)移動します。

cd ~terdon

したがって、可能なすべてのユーザー名に展開されます~Tabこのリストはのユーザーリストと同じでなければなりません/etc/passwd

Debian で試してみると、これが起こることを確認できます。

答え2

私の考えでは、/etc/passwordに "home"ディレクトリがある人を逆方向に照会するようです。

OS Xでは、/ etc / passwdの代わりに開かれたディレクトリが照会されます。

答え3

バッシュリファレンスマニュアル説明する:

Bashはテキストをユーザー名補完として処理しようとします(テキストが「〜」で始まる場合)。

吹く使用 getpwent完了する機能です。

man getpwentOSXでは、次のように言います。

これらの関数は、master.passwd(5)で説明されているように、/etc/master.passwdのレコードを含むopendirectoryd(8)から情報を取得します。

関連情報