注意:此行为是通过使用 SSH 进行远程访问观察到的。
我注意到,如果我使用符号链接移动到目录,则无法使用..
目录列表中的条目移回父目录,然后移入后续目录。例如:
/DirA/SymLinkToDirB
/DirA/SomeOtherFile.txt
/DirA/DirB
/DriA/DirC
/DirA/DirB/someFile.txt
如果我当前处于DirA
并发出以下命令:
cd SymLinkToDirB
那么后续操作将按预期pwd
解析。但是,如果我当前通过 symLink/DirA/DirB
处于 ,则以下命令将不起作用。DirB
vim ../SomeOtherFile.txt
, 甚至cd ../DirC
此外,tab
使用 cd 时按 Enter 通常会列出用户可能遍历的目录。但是,同样,在本地计算机上预期和观察到的这种行为在 SSH 上也不起作用。
然而,以下做如果我们已经DirB
通过符号链接到达那里,则该操作将起作用:cd ../SymLinkToDirB/
,这是一个相当无用的操作。符号链接似乎驻留在它自己的目录(其父目录)中。
毫无疑问,这与 SSH 中处理符号链接的方式有关。通过 SSH 处理符号链接的机制是什么,从而提供这种行为?
答案1
该cd
命令试图变得聪明,并具体记住如何你到达您当前所在的目录,并假定您想再次沿着相同的路径出去。
然而,一旦您进入目录,其他命令(如vim
)将看到现有..
目录并通过真实文件系统跟踪它。
我有时会这样做cd symlinktoDirB/../DirB/..
。使用额外的 s 集..
将强制cd
查看真实的文件系统路径并遵循它。