Unix(包含Linux)的初學者,經常會很困惑,不明白目錄結構的含義何在。html
舉例來講,根目錄下面有一個子目錄/bin,用於存放二進制程序。可是,/usr子目錄下面還有/usr/bin,以及/usr/local/bin,也用於存放二進制程序;某些系統甚至還有/opt/bin。它們有何區別?ide
長久以來,我也感到很費解,不明白爲何這樣設計。像大多數人同樣,我只是根據《Unix文件系統結構標準》(Filesystem Hierarchy Standard),死記硬背不一樣目錄的區別。spa
昨天,我讀到了Rob Landley的簡短解釋,這才恍然大悟,原來Unix目錄結構是歷史形成的。操作系統
話說1969年,Ken Thompson和Dennis Ritchie在小型機PDP-7上發明了Unix。1971年,他們將主機升級到了PDP-11。.net
當時,他們使用一種叫作RK05的儲存盤,一盤的容量大約是1.5MB。設計
沒過多久,操做系統(根目錄)變得愈來愈大,一塊盤已經裝不下了。因而,他們加上了第二盤RK05,而且規定第一塊盤專門放系統程序,第二塊盤專門放用戶本身的程序,所以掛載的目錄點取名爲/usr。也就是說,根目錄"/"掛載在第一塊盤,"/usr"目錄掛載在第二塊盤。除此以外,兩塊盤的目錄結構徹底相同,第一塊盤的目錄(/bin, /sbin, /lib, /tmp...)都在/usr目錄下從新出現一次。unix
後來,第二塊盤也滿了,他們只好又加了第三盤RK05,掛載的目錄點取名爲/home,而且規定/usr用於存放用戶的程序,/home用於存放用戶的數據。orm
今後,這種目錄結構就延續了下來。隨着硬盤容量愈來愈大,各個目錄的含義進一步獲得明確。htm
/:存放系統程序,也就是At&t開發的Unix程序。blog
/usr:存放Unix系統商(好比IBM和HP)開發的程序。
/usr/local:存放用戶本身安裝的程序。
/opt:在某些系統,用於存放第三方廠商開發的程序,因此取名爲option,意爲"選裝"。