符号链接和相对路径的奇怪之处

符号链接和相对路径的奇怪之处

有人可以向我解释一下吗?我无法理解它是如何设置的以及它为什么会这样。

我想看看在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

这里发生了什么?

答案1

/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

相关内容