在指向目录的软链接内时 cd 和 ls 的行为不同

在指向目录的软链接内时 cd 和 ls 的行为不同

当我们通过软链接 cd 进入目录时,我观察到:

  1. ls ..将显示链接目录的父目录的内容,而cd ..将显示在软链接的父目录下。为什么它们不同?

  2. cd ..后面跟着的选项卡不提供任何完成选项,既不提供链接目录的父目录的内容,也不提供软链接的父目录的内容。为什么会这样呢?

  3. 在上述情况下,我们如何知道在所有目录命令中哪些适用于链接目录或其软链接?

答案1

因为 bash(可能还有其他 shell)会跟踪您下降的路径,包括符号链接,以便使您的回溯轨迹看起来像下降的轨迹。

Bash 知道你如何到达工作目录,因为cd它必须是内置的 shell。当您运行ls ..shell 时,无法替换“符号路径”,因为grep ..它也是有效的,并且翻译..会非常混乱。

事实上,shell 目前有两种解释,..可以说这两种解释很令人困惑,就好像它根本没有试图提供帮助一样。

相关内容