【问题标题】:When we do not have execute permission on current directory, why does "cd .." work?当我们对当前目录没有执行权限时,为什么“cd ..”会起作用?
【发布时间】:2014-07-29 11:01:51
【问题描述】:

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

【问题讨论】:

  • 我不同意这是题外话。它与shell脚本有关,是一种编程。

标签: linux unix file-permissions


【解决方案1】:

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

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

默认是跟随符号链接,好像-L' were specified. ..' 是通过删除前一个路径名来处理的 组件回到斜杠或 DIR 的开头。

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

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

其他 shell 的行为方式可能相同,也可能不同。

【讨论】:

  • 你是对的,谢谢。在 bash 中,如果我们使用带有 -P 选项的 cd,那么一切看起来都很正常。
猜你喜欢
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2012-08-03
  • 1970-01-01
  • 2016-03-26
  • 2013-04-18
相关资源
最近更新 更多