有人可以向我解释一下吗?我无法理解它是如何设置的以及它为什么会这样。
我想看看在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
。