根目录的父目录

根目录的父目录

在 / 处 cd .. 之后,为什么我们还在 /?

例子:

pradeep@pradeep-laptop:/> cd ..
pradeep@pradeep-laptop:/>

这种行为有什么具体原因吗?

答案1

根目录中有一个“.”和一个“..”条目,每个条目的 inode 编号相同。传统上,inode 编号为 2;在 MacOS X、Linux、Solaris 上仍然如此。因此,当您执行“cd /; cd ..”时,您最终会到达相同的位置。

在 20 世纪 80 年代,有一个名为 Newcastle Connection 的系统,它将联网计算机视为本地计算机根目录之上。因此,在这样的机器上,您可以输入:

cd /../othermachine/path/to/interesting/place

将目录更改为远程文件系统。

(您可以通过谷歌搜索“Newcastle Connection”找到该报纸 -网址很难解决。

答案2

cd ..命令将带您进入目录结构的上一层。由于您已经处于最高层,因此它只会将您留在根目录中。

答案3

是的,POSIX 标准中描述了此行为chroot

根目录中的点点条目被解释为根目录本身。因此,点点不能用于访问以根目录为根的子树之外的文件。

https://pubs.opengroup.org/onlinepubs/7908799/xsh/chroot.html

更详细的内容见“路径名解析”:

文件名点点相对于根目录的引用是实现定义的。在版本 7 中,它引用根目录本身;这是 POSIX.1-2008 中提到的行为。在某些联网系统中,构造/../主机名/用于引用另一台主机的根目录,POSIX.1 允许这种行为。

https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/xrat/V4_xbd_chap04.html

虽然抛出错误似乎更合乎逻辑,但这种行为允许所有目录被相同对待,而不必将根目录视为特例。

相关内容