Directory
符號連結和相對路徑的奇怪之處
有人可以向我解釋一下嗎?我無法理解它是如何設置的,以及它為什麼會這樣。
我想看看我使用的機器
zsh
上實際安裝的位置。所以我曾經ls
找到符號連結指向的位置。$ ls -l /bin/zsh lrwxrwxrwx 1 root root 14 Dec 1 2011 /bin/zsh -> ../sfw/bin/zsh*
當我看到這個時,我想,“好吧,符號連結使用相對路徑。沒什麼大不了的。”
但是,如果我然後嘗試
cd
直接指向相對路徑指向的位置,我會得到:$ cd /bin/sfw/bin cd: no such file or directory: /bin/sfw/bin
但是,如果我專門輸入這個
$ cd ../sfw/bin
什麼時候
/bin
是工作目錄,然後它工作。然後我也得到了這個:$ pwd /usr/sfw/bin
這裡發生了什麼?
/bin``/usr/bin
可能是您系統上的符號連結。如果那是真的,那麼:/bin/../sfw/bin/zsh
實際上與
/usr/bin/../sfw/bin/zsh
這減少到
/usr/sfw/bin/zsh
這是
zsh
實際居住的地方。請注意,您嘗試過的是/bin/sfw/bin
不對應於您在系統上實際可以看到的任何路徑。
../sfw/bin/zsh
給定構成相對路徑 () 基礎的絕對路徑路徑,解析相對路徑 () 的正確方法/bin
是將它們連接在一起作為/bin/
+../sfw/bin/zsh
→/bin/../sfw/bin/zsh
。