spr*_*aff 3 command-line bash zsh symlink
我的目录设置有点像这样
~/code
~/code/src
~/code/build -> /path/to/somewhere/else
Run Code Online (Sandbox Code Playgroud)
最后一个是符号链接。
如果我这样做
cd ~/code/build
ls ..
Run Code Online (Sandbox Code Playgroud)
然后我得到了 的列表/path/to/somewhere,但从其他评论和我自己的经验来看,我希望看到 的列表~/code- 我发誓这曾经是相反的。
我在 Ubuntu 上使用 zsh 和 bash。是否有这样的设置或者它是否深深地融入到 POSIX 之类的东西中?
不是 的问题ls。这就是符号链接的工作原理。它..让您进入当前目录的父目录,该目录不知道您通过符号链接到达它。shell 必须进行干预以防止这种行为。对于 shell 内置命令cd,有特殊的处理,它不仅会调用chdir,还会记住完整的目录路径并尝试找出您想要的内容。ls但是,它不是内置的。如果你想得到你所期望的结果,shell 必须..在传递它之前更改为不同的路径。选项可以帮助您。lszshCHASE_DOTS
一般来说,目录的符号链接是一件肮脏的事情。对于关键和半永久性应用,请使用mount --bind.