SSH 上的符号链接:如果通过符号链接遍历当前目录,为什么我无法访问父目录中的文件/目录?

SSH 上的符号链接:如果通过符号链接遍历当前目录,为什么我无法访问父目录中的文件/目录?

注意:此行为是通过使用 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查看真实的文件系统路径并遵循它。

相关内容