许多软件在假设上工作,事实上 POSIX.1 并没有向他们保证,但传统上是在 UNIX 系统上的情况,并且在许多 UNIX 文献中都有记载,即(引用一篇这样的 UNIX 文献):
每个目录都包含文件名 dot 和 dot-dot (.
and..
),它们的 inode 编号分别是目录及其父目录的编号。[...]所述的程序mkfs
,使得初始化文件系统.
和..
根目录的具有文件系统的根目录节点号码。— 莫里斯 J. 巴赫 (1986)。UNIX 操作系统的设计。 普伦蒂斯大厅。页。73
例如:旧的getcwd()
库函数(在没有为其提供特殊内核支持的系统上)依赖于它来知道..
在组合当前目录名称时何时停止跟踪条目链。当它到达自己的父目录或无法遍历到..
.
所以,根目录下有(或尽可能应用模式的程序而言,至少之所以出现有尽可能通过系统API看到的)一个..
条目是很多东西是基于这样的假设,每一个目录都有..
,和该..
根是一个环可以被用于检测,一个是在根目录下。
POSIX.1实际上不保证该根目录下有一个..
,只是指定程序必须考虑为一个循环的可能性,如果有一个..
根目录。这是为了允许非 UNIX 系统也符合 POSIX。有文件系统,其中的不存在的..
指示的目录是根目录。并且,正如巴赫本人所讨论的,在根目录上方有一个目录的系统,POSIX.1 在讨论以两个斜杠开头的绝对路径名时允许(类似于 Microsoft 局域网系统中使用的通用命名约定) )。
然而,Linux(以及 Ubuntu Linux)为 UNIX 范式提供了更严格的保证。