Directory

符號連結和相對路徑的奇怪之處

  • May 19, 2015

有人可以向我解釋一下嗎?我無法理解它是如何設置的,以及它為什麼會這樣。

我想看看我使用的機器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

引用自:https://unix.stackexchange.com/questions/204388