这关于 /usr 合并的 systemd wiki 页面,在神话 #6 下,指出/bin
传统上它是/usr/bin
System 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 甚至进行了重新安排,以便可以通过网络以只读方式安装共享副本。成为 的符号链接。位于根文件系统上,或者最好位于另一个分区上。sh
mount
fsck
/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 及后续版本上,......”。