假设我们有一个名为foo的目录:/home/user/foo
。在我cd
foo之后,我更改了当前目录的执行权限:chmod -x ../foo
。删除执行权限后,我无法访问任何文件,这是正常的。但是当我写“cd ..
”时,我可以更改目录。为什么“cd ..
”有效?
答案 0 :(得分:4)
至少在bash中,cd ..
是专门实现的。它不会从当前目录中读取..
目录;相反,它通过删除尾随组件来计算父目录的名称。
从bash 4.3来源引用builtins/cd.def
:
默认设置是遵循符号链接,就像通过删除前一个路径名来处理
-L' were specified.
..'一样 组件返回斜线或DIR的开头。
您可以将此视为help cd
输出的一部分。
这个帮助文本似乎已经在bash 4.3中引入了,但功能至少可以追溯到bash 3.2。
其他炮弹的行为可能相同或不同。