
我的基本問題是為什麼這兩條路徑都指向 home(即~
)?它指向同一個家還是重複的?
我懷疑它是重複的,所以如果不是,如何cd ..
決定將我帶回哪個目錄?
答案1
行為方式cd ..
取決於 shell、shell 設定以及是否涉及符號連結(在本例中很可能如此)。
bash-4.1$ cd /var/tmp
bash-4.1$ mkdir -p real/cats
bash-4.1$ ln -s real/cats dogs
bash-4.1$ cd dogs/
bash-4.1$ pwd
/var/tmp/dogs
bash-4.1$ pwd -P
/var/tmp/real/cats
bash-4.1$ cd ..
bash-4.1$ pwd
/var/tmp
bash-4.1$ set -o physical
bash-4.1$ cd dogs
bash-4.1$ pwd
/var/tmp/real/cats
bash-4.1$ cd ..
bash-4.1$ pwd
/var/tmp/real
bash-4.1$
調查/var/mail
目錄ls
應該會顯示是否有任何符號連結是由我猜是蘋果公司完成的。
答案2
在 macOS 上(我猜這是因為你提到的/Users
),/var/mail/username
是mbox
user 的 -formatted 收件匣郵箱username
,並且/Users/username
是同一用戶的主目錄。
在普通的、未經修改的 macOS 安裝上,/var/mail/username
將不是是到用戶主目錄的符號鏈接,也不是/Users/username
到/var/mail/username
.
cd ..
預設會像這樣工作cd -L ..
,即它會帶你到邏輯的父目錄而不是身體的父目錄 ( cd -P ..
)。
來自ksh
macOS 上的手冊:
預設情況下,查找目錄名稱時會按字面意思處理符號連結名稱。這相當於
-L
選項。此-P
選項會導致在確定目錄時解析符號連結。命令列上-L
或的最後一個實例決定使用哪種方法。-P