相对路线的象征方法为啥是”/usr”实际不是”//usr”

前几天闲逛贴吧,竟然见到有私人商品房问相对路线的意味方法为何不是//usr/local而是/usr/local。原文:

图片 1

本人想99%的人都没想过那一个标题,都理之当然的以为:它不正是根”/”吗?

很巧,笔者是个探求狂和失眠伤者,当年回笼复习文件系统的时候,正好切磋过那几个主题素材。上边是作者的知情,自认能讲明的通。但自己到底生手,也万般无奈注明是不是真是如此,如有错误,款待大拿指正。

本身的定论是:”//usr/local”是没有错的,和”/usr/local”的含义一模一样。

1.根文件系统具备”自援用”性,”/”和”//”无论是功能上还是意义上,都完全同样。

2.除了根目录外的轻便目录,其内的”.”和”..”的inode号差异,它们各自是当前目录的硬链接和父目录的硬链接。但是根目录下的”.”和”..”的inode号一致,都是根目录的硬链接。

例如:

[root@node1 ~]# ls -ail /usr
total 204
      155 drwxr-xr-x.  13 root root  4096 May 11  2017 .
      128 dr-xr-xr-x.  17 root root  4096 May 11  2017 ..

[root@node1 ~]# ls -ail /
total 36
      128 dr-xr-xr-x.  17 root root 4096 May 11  2017 .
      128 dr-xr-xr-x.  17 root root 4096 May 11  2017 ..

3.在Linux操作系统运转的时候,内核先有”虚构根文件系统”,表示方法为”/”,之后找到真正的根文件系统,从”虚构跟文件系统”切换来”真实根文件系统”。切换的艺术便是将真实的根文件系统”挂载”到虚构根文件系统上(并不是真正挂载,但能够如此清楚)。所以到那边正确的方法是”//”,当中第二个”/”是杜撰根目录,第贰个”/”是动真格的根文件系统。

据此,根文件系统下的”..”代表的是率先个”/”,即虚根,”.”代表的是第三个”/”,代表的是潜心关注根目录。

在切换成真正根文件系统时,虚根和实根的inode号是平等的。但怎么能一直以来?虚根为何也许有inode号?

那是因为在各样分区创建为文件系统的时候,一定会先行保留多少个奇特的inode号,一样的文件系统,这几个预留inode号一定是同等的。譬如ext类的文件系统中,为”/”保留的inode号为2,为”/proc”保留的inode号为1。这个留给的inode号正是为着给切换来实际根文件系统前的虚构根文件系统使用的,它们记录在initrd/initramfs中。那样来讲,不仅可以为虚根分配inode,又能担保在切换时,”/”(虚根)和”//”(实根)的inode号保持一致,并在系统成功运维后选择。

 

据此能够利用”/”来顶替”//”,只怕是为了有支持,恐怕是为了一点一致性,什么人知道吗,以致上面我的演绎也是不当的吧。另外,除了相对路线的前缀”/”,路径中的大肆”/”都能够轮换为”//”,举个例子”/usr//local”也能科学表示”/usr/local”,但它们和前缀的”//”意义差别,之所以不报错且能精确当成单个斜线/,是因为系统有极度的门路管理函数。

相关文章