在Linux中有两条看起来相同的path,一条可以工作,一条不可以

我在~/www目录中,我试图编辑~/.bashrc

我做了vi ../.bashrc创build了一个新的空文件。

我做了cd ..vi .bashrc和正确的文件被打开。

这是应该发生在Linux?

编辑:我只是尝试touch ../.bashrc ~/www ,我找不到应该已经创build的文件。

如果当前目录是符号链接,就会发生这种情况。

当你cd到一个符号链接时, ..会引用符号链接目标的父节点:

 $ ln -s /tmp mylink $ cd mylink $ pwd /home/me/mylink $ realpath . /tmp $ realpath .. / 

但是 ,bash会因为聪明而让你感到困惑,并且会有不同的表现。 这里是help cd

通过删除刚才的路径名组件回到斜杠或DIR的开始来处理“..”。

这意味着,当你cd .. ,bash会奇迹般地把你从/home/me/mylink/home/me 。 这个区别很混乱,也是非常有用的。

如果你使用cd -P .. ,这个魔法是不会被调用的,它将把你从/home/me/mylink/ ,就像所有其他的工具一样。


当你意识到..不是那种意思是“父目录”的特殊语法时,这就更容易了。 每个目录实际上都有一个诚实的对Linus条目命名..

在旧的Unix系统上,这只是一个方便的习惯,而mkdir /foo/bar也会自动ln /foo /foo/bar/..你可以根据需要删除或重新链接。 今天,它是由文件系统严格执行。

很显然, /tmp/..链接到/ ,并且不会因为你遵循一个符号链接而到/tmp