我的系统很大一部分依赖于符号链接,所以这是一个非常严重的问题。我做了类似以下的事情
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
而不是相反的黑客行为。