編集:これは/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~stringstring
~fooは、ユーザーのホームディレクトリですfoo。ユーザーが指定されていない場合、現在のユーザーがデフォルトになります。