Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux中有两条看似等价的路径,一条有效,另一条无效_Linux_Command Line - Fatal编程技术网

Linux中有两条看似等价的路径,一条有效,另一条无效

Linux中有两条看似等价的路径,一条有效,另一条无效,linux,command-line,Linux,Command Line,我在目录~/www中,正在尝试编辑~/.bashrc 我做了vi../.bashrc和Vim创建了一个新的空文件 我做了一张cd。。和vi.bashrc,并打开正确的文件 这应该在Linux中发生吗 编辑: 我刚刚在~/www中尝试了touch../.bashrc,但找不到应该创建的文件。如果当前目录是符号链接,则会发生这种情况 当您将cd刻录到符号链接时。。将引用符号链接目标的父级: $ ln -s /tmp mylink $ cd mylink $ pwd /home/me/mylink $

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

我做了vi../.bashrc和Vim创建了一个新的空文件

我做了一张cd。。和vi.bashrc,并打开正确的文件

这应该在Linux中发生吗

编辑:
我刚刚在~/www中尝试了touch../.bashrc,但找不到应该创建的文件。

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

当您将cd刻录到符号链接时。。将引用符号链接目标的父级:

$ ln -s /tmp mylink
$ cd mylink
$ pwd
/home/me/mylink
$ realpath .
/tmp
$ realpath ..
/
然而,bash会因为聪明和有cd而迷惑你。。表现不同。以下是帮助光盘:

`..通过删除前一个路径名组件进行处理 返回斜杠或目录的开头

这意味着当你播放cd时,bash会神奇地将你从/home/me/mylink带到/home/me。这种差异非常令人困惑,但也非常有用

如果您使用cd-p..,这个魔法就不会被调用,它将把您从/home/me/mylink带到/,就像所有其他工具一样

当你意识到。。在任何方面都不是表示父目录的特殊语法。每个目录实际上都有一个诚实的Linus条目,名为

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

显然,/tmp/。。链接到/,这不会因为您跟随符号链接到达/tmp而改变。

vi./bashrc将编辑bashrc,而不是.bashrc。文件以a开头。如果*nix被隐藏,使用ls-a或ls-la来显示它们。输入错误,应该是vi.bashrc。