我在~/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
。