当我们对当前目录没有执行权限时,为什么“cd ..”有效?

时间:2014-06-08 21:54:17

标签: linux unix file-permissions

假设我们有一个名为foo的目录:/home/user/foo。在我cd foo之后,我更改了当前目录的执行权限:chmod -x ../foo。删除执行权限后,我无法访问任何文件,这是正常的。但是当我写“cd ..”时,我可以更改目录。为什么“cd ..”有效?

1 个答案:

答案 0 :(得分:4)

至少在bash中,cd ..是专门实现的。它不会从当前目录中读取..目录;相反,它通过删除尾随组件来计算父目录的名称。

从bash 4.3来源引用builtins/cd.def

  

默认设置是遵循符号链接,就像通过删除前一个路径名来处理-L' were specified. ..'一样   组件返回斜线或DIR的开头。

您可以将此视为help cd输出的一部分。

这个帮助文本似乎已经在bash 4.3中引入了,但功能至少可以追溯到bash 3.2。

其他炮弹的行为可能相同或不同。