Directory-Structure

為什麼 System V 傳統上將 /bin 符號連結到 /usr/bin?

  • November 4, 2013

這個關於 /u​​sr merge 的 systemd wiki 頁面,在 Myth #6 下,指出/bin傳統上它是/usr/binSystem V UNIX 上的符號連結。

這樣做的動機是什麼?為了向後兼容,這是有道理的,但我不明白為什麼早期會這樣。(或者,我是不是誤會了?早期的 UNIX 版本是否區分了/binand /usr/bin,而 System V 通過合併它們來改變這一點?)

簡短的回答是,是的,它是為了兼容性而完成的(引用了很多程序),/bin/sh並且/bin/ed在早期/bin並且/usr/bin包含完全不相交的文件集。/bin位於根文件系統上,這是電腦啟動韌體必須能夠訪問的一個小磁碟,它保存著更重要和經常使用的文件。/usr/bin/usr,通常是一個完全獨立的、更大的磁碟。/usr,起初,還包含使用者的主目錄。隨著/usr增長,我們會定期用更大的驅動器替換它的驅動器。/usr即使沒有那麼有用,系統也可以在沒有安裝的情況下執行。

/usr的磁碟(或磁碟分區)是在 Unix 核心啟動後掛載的,並且系統處於使用者模式啟動過程的中途(/etc/rc),因此shmount和之類的程序fsck必須在根文件系統中,通常在/bin/etc. Sun 甚至進行了重新安排//usr以便/usr可以通過網路以只讀方式安裝 的共享副本。/usr/tmp成為 的符號連結/var/tmp/var要麼在根文件系統上,要麼最好在另一個分區上。

我相信是 Sun 在某一時刻決定,如果系統被毀壞,不值得英勇地嘗試讓一個系統能夠出現/usr。大多數使用者要麼擁有//usr在同一個物理磁碟上——所以如果它死了,兩個文件系統都烤好了——或者/usr從伺服器上以只讀方式掛載。所以一些用於系統啟動和維護的關鍵程序被靜態編譯並放入/sbin,但其中的大部分程序/bin都被移到/usr/bin/bin.symlink /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 和後續版本上,……”。

引用自:https://unix.stackexchange.com/questions/98580