所有符号链接的父目录不一致

所有符号链接的父目录不一致

我的系统很大一部分依赖于符号链接,所以这是一个非常严重的问题。我做了类似以下的事情

cd
mkdir test
mkdir other
cd test
ln -s ../other/
# So ~/test contains a symlink to ~/other
cd other
dirname `pwd`
# So far so good; prints /home/user/test
ls ..
# Prints the contents of /home/user (???)
cd ..
# Now we're back in /home/user/test

因此,当前工作目录的父目录和..在的上下文中指的是两个不同的位置ls(并且也是cp),但不是cd

我在我的系统上的所有符号链接(包括现有和新的(如上例)以及多个文件系统)上都发现了这个问题。nautilus 中也发生了同样的事情,它现在显示我单击的任何符号链接的物理路径的面包屑,而不是相对路径。据我所知,我没有更改任何会导致此类错误的内容,并且启动旧内核似乎无法解决问题。我看到许多帖子都希望实现此行为,但没有一个帖子可以纠正它。

任何关于这个问题的想法都将不胜感激。我正在运行 Ubuntu Linux 12.10 3.11.0-18-generic。

答案1

您的 shell 会记住您何时cd通过符号链接进入目录,并在 时使用该信息cd ..。如果您使用bash或 ,zsh则可以执行该命令set -P以使其cd行为与 相同cp(即,使其忽略符号链接,以便在您的示例中将cd ..您带到/home/user,而不是/home/user/test)。

參閱这个 Unix 和 Linux SE 问题cp欲了解更多信息,包括如何使行为类似cd而不是相反的黑客行为。

相关内容