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
foo
sistemimde 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 zamanqux
otomatik tamamlamada görünmüyor. Yinequx
benim sistemimdeki bir kullanıcı değil. - Önemli
/some/mount/point
ise 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/point
kesinlikle benim ana dizinim değil. cd ~
beni /Users/$username/
--which maçlarına götürür$HOME
zsh
aynı 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, env
adlandı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 ~text
yalnı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ı ~lp
için). Tüm testlerde, içinde ~string
olan tekabül string
kullanıcı adı olmaktan.
~foo
kullanıcının giriş dizinidirfoo
. Kullanıcı belirtilmezse, geçerli kullanıcı varsayılan değerdir.