为什么 System V 传统上将 /bin 符号链接到 /usr/bin?

为什么 System V 传统上将 /bin 符号链接到 /usr/bin?

关于 /usr 合并的 systemd wiki 页面,在神话 #6 下,指出/bin传统上它是/usr/binSystem V UNIX 上的符号链接。

这样做的动机是什么?为了向后兼容这是有道理的,但我不明白为什么早期会这样。 (或者,我是否误解了?早期的 UNIX 版本是否区分/bin/usr/bin,而 System V 通过合并它们来改变这一点?)

答案1

简短的回答是,是的,这样做是为了兼容性(许多程序引用了/bin/sh/bin/ed),并且在早期/bin包含/usr/bin完全不相交的文件集。/bin位于根文件系统上,这是计算机启动固件必须能够访问的一个小磁盘,并保存更关键和常用的文件。/usr/bin位于/usr,通常是一个完全独立的、更大的磁盘上。/usr最初,还包含用户的主目录。随着/usr发展,我们会定期用更大的东西替换它的驱动器。该系统可以在没有/usr安装的情况下运行,即使不是很有用。

/usr的磁盘(或磁盘分区)是在 Unix 内核启动后安装的,并且系统正处于用户模式启动过程( )中,因此像和一样/etc/rc的程序必须位于根文件系统中,通常位于和 中。 Sun 甚至进行了重新安排,以便可以通过网络以只读方式安装共享副本。成为 的符号链接。位于根文件系统上,或者最好位于另一个分区上。shmountfsck/bin/etc//usr/usr/usr/tmp/var/tmp/var

我相信 Sun 在某一时刻决定,如果一个系统被废弃了,那么不值得英雄式地尝试让一个系统能够出现/usr。大多数用户要么在同一个物理磁盘上拥有/和,所以如果它死了,两个文件系统都会被烤毁——或者从服务器以只读方式安装。因此,一些用于系统启动和维护的关键程序被静态编译并放入,但大多数程序被移至并成为./usr/usr/sbin/bin/usr/bin/bin/usr/bin

R4 之前的 System V 甚至没有符号链接。 Sun 和 AT&T 致力于将 SunOS 和 SVR3 结合起来,成为 SVR4(和 Solaris 2)。它有/bin一个符号链接到/usr/bin.

因此,当该网站说“在 SysV Unix 上/bin传统上是一个符号链接/usr/bin”时,他们确实应该说“在 System V Release 4 及后续版本上,......”。

相关内容