Düzenleme: Bu, /programming/998626/meaning-of-tilde-in-linux-bash-not-home-directory/ kopyası . Bu soruyu yinelenen olarak kapatma şöhretim yok.
Ben ~ana dizinde olduğu gibi değil, bu atıfta :
$ ls ~foo/bar
/some/mount/point/foo/bar
Ancak farklı bir bağlama noktası ile denerseniz, örneğin:
$ 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
~Bu bağlamda ne denir? O nasıl çalışır?
Düzenleme: Aşağıdaki yorumlardan bazılarına dayalı olarak daha fazla bilgi:
- Bunun
foosistemimde bir kullanıcı adı olmadığını kanıtlayabilirim . - Otomatik tamamlama girişimi sırasında
ls -lah ~tüm seçenekler gösterilmez. yani ben açabiliyorumcd ~qux, ne zamanquxotomatik tamamlamada görünmüyor. Yinequxbenim sistemimdeki bir kullanıcı değil. - Önemli
/some/mount/pointise bir ağ paylaşımı. - Tüm ayrıntılar, yol adı genişletmesinin bir Z kabuğu özelliği olan bazı adlandırılmış yol muckery'lerini önerir, ancak bu görünüşte Z kabuğunun adlandırılmış yolları gibi şeyleri desteklemeyen bash'da da çalışır.
/some/mount/pointkesinlikle benim ana dizinim değil. cd ~beni /Users/$username/--which maçlarına götürür$HOME
zshaynı zamanda, adlandırılmış dizinleri belirtmek için yaklaşık işareti kullanır.
bash -c "ls ~foo/bar"de isimlendirilmiş dizinlere sahip olmayan bash ( ) biçiminde de çalışır . Ayrıca zsh içinde bile, eğer incelersem, envadlandırılmış dizinleri görmüyorum. Mac OS kullanıyorum ve bu OS X'e özgü bir özellik olduğunu hissediyorum.
~foo. Asıl dizeyi alın (örnek değil foo) ve yapın grep "actual username" /etc/passwd. bash kılavuzuna göre ~textyalnızca olası oturum açma kullanıcı adları için çalışmalıdır (örneğin oturum açabileceği anlamına gelmez; örneğin sistem kullanıcıları ~lpiçin). Tüm testlerde, içinde ~stringolan tekabül stringkullanıcı adı olmaktan.
~fookullanıcının giriş dizinidirfoo. Kullanıcı belirtilmezse, geçerli kullanıcı varsayılan değerdir.