我的目录设置有点像这样
~/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 必须..
在传递它之前更改为不同的路径。选项可以帮助您。ls
zsh
CHASE_DOTS
一般来说,目录的符号链接是一件肮脏的事情。对于关键和半永久性应用,请使用mount --bind
.
答案2
既然你用我的标签标记了你的问题,zsh
我假设我们正在谈论这个外壳。
您很可能已经设置了(直接或间接使用某些外部脚本,例如oh-my-zsh
)变量CHASE_LINKS
和/或CHASE_DOTS
。要确认运行setopt | grep -i chase
并查看它们是否已列出。如果是,只需取消设置即可:
unsetopt CHASE_DOTS
unsetopt CHASE_LINKS