ls .. 无法与符号链接正常工作

ls .. 无法与符号链接正常工作

我的目录设置有点像这样

~/code
~/code/src
~/code/build -> /path/to/somewhere/else

最后一个是符号链接。

如果我这样做

cd ~/code/build
ls ..

然后我得到 的列表/path/to/somewhere,但是来自其他备注和我自己的经验,我希望看到列表~/code- 我发誓这曾经是相反的。

我在 Ubuntu 上使用 zsh 和 bash。是否有这样的设置或者它是否深深地融入到 POSIX 之类的东西中?

答案1

不是 的问题ls。这就是符号链接的工作原理。它..让您进入当前目录的父目录,该目录不知道您通过符号链接到达它。 shell 必须进行干预以防止这种行为。对于 shell 内置命令cd,有特殊的处理,它不仅会调用chdir,还会记住完整的目录路径并尝试找出您想要的内容。ls但是,它不是内置的。如果你想得到你所期望的结果,shell 必须..在传递它之前更改为不同的路径。选项可以帮助您。lszshCHASE_DOTS

一般来说,目录的符号链接是一件肮脏的事情。对于关键和半永久性应用,请使用mount --bind.

答案2

既然你用我的标签标记了你的问题,zsh我假设我们正在谈论这个外壳。

您很可能已经设置了(直接或间接使用某些外部脚本,例如oh-my-zsh)变量CHASE_LINKS和/或CHASE_DOTS。要确认运行setopt | grep -i chase并查看它们是否已列出。如果是,只需取消设置即可:

unsetopt CHASE_DOTS
unsetopt CHASE_LINKS

相关内容