根目录下的父级目录列表

5

众所周知,每个Unix目录都包含特殊的目录-当前目录(.)和父目录(..)。此外,在Unix中,顶级根目录称为“ / ”。

当我在根目录尝试时,

  $ ls -ia
         2 .                    
         2 .. 
      3963 bin

............... 

点号 (.) 和双点号 (..) 具有相同的索引节点编号。

并执行

$ cd .. 

在根目录中,以相同的位置结束。

我的问题是为什么即使根目录也包含特殊的目录列表(..)?为什么需要在根目录中列出(..)?


“一致性”是足够好的理由吗? - FDavidov
复制 http://unix.stackexchange.com/questions/125972/cd-on-root-folder 并同意 codeforester 的观点,UNIX文件系统早期就做出了选择,这是一种增加统一性的理想方式。 - bk-se
2个回答

4

简单来说,它只是为了保持约定一致性而存在


根据POSIX定义

3.144 空目录

一个目录最多包含点和点点的目录项,并且除了其自己的点条目(如果存在)之外,在点点中恰好有一个链接。该定义在所有文件命令的POSIX描述中以不同措辞重复。

来自Superuser 答案:

这个复杂的“空目录”定义显然是这种有趣约定的背后原因,它的目的是避免任何例外情况,甚至对于斜杠(/)即根目录也是如此。


我从谷歌得到的另一个答案是,在早期的网络化Unix或类Unix系统中,/hostname被认为是根目录。在这样的网络中,我们可以使用路径/hostname访问其他Unix系统。 - engineer2014

1
这是目录的Unix标准。所有目录都有一个指向自身的条目(.),以及父目录(..)的条目。这些特殊条目用于目录遍历。遵循“保持简单”的策略,根目录与其他目录具有相同的基本结构。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接