編集:これは/programming/998626/meaning-of-tilde-in-linux-bash-not-home-directory/の複製です。この質問を重複として閉じる評判はありません。
私は~
ホームディレクトリのようにではなく、これを参照しています:
$ ls ~foo/bar
/some/mount/point/foo/bar
ただし、別のマウントポイントで試してみると、たとえば:
$ mount | ag "/dev "
devfs on /dev (devfs, local, nobrowse)
$ ls /dev/stdin
/dev/stdin
$ ls ~stdin
zsh: no such user or named directory: stdin .
# bash has a similar error message:
ls: ~stdin: No such file or directory
~
この文脈で何と呼ばれていますか?どのように機能しますか?
編集:以下のコメントのいくつかに基づいた詳細情報:
foo
私のシステム上のユーザー名ではないことを証明できます。- オートコンプリートを試みるときに、
ls -lah ~
すべてのオプションが表示されるわけではありません。つまり、オートコンプリートに表示されないcd ~qux
場合、できqux
ます。繰り返しqux
ますが、私のシステムではユーザーではありません。 - 重要なの
/some/mount/point
はネットワーク共有です。 - 詳細はすべて、パス名展開のZシェル機能である名前付きパスマッカーリーを示唆していますが、これはbashでも機能します。
/some/mount/point
間違いなく私のホームディレクトリではありません。 cd ~
私を取る/Users/$username/
--whichマッチ$HOME
zsh
チルダを使用して名前付きディレクトリを示すようにも見えます。
bash -c "ls ~foo/bar"
)-名前付きディレクトリがありません。さらに、zsh内でも、を調べてもenv
、名前付きディレクトリが設定されていないことがわかります。私は、Mac OS上だと私は、これはOS Xにいくつかの機能の特定と感じる
~foo
。実際の文字列(例ではなくfoo
)を取得して、実行しますgrep "actual username" /etc/passwd
。bashマニュアルによると、可能なログインユーザー名~text
だけで機能するはずです(たとえば、実際にログインできることを意味するわけではありません。たとえば、などのシステムユーザーの場合)。私のすべてのテストでは、はユーザー名であることに対応しています。~lp
~string
string
~foo
は、ユーザーのホームディレクトリですfoo
。ユーザーが指定されていない場合、現在のユーザーがデフォルトになります。