Unix(包含Linux)的初學(xué)者,常常會(huì)很困惑,不明白目錄結(jié)構(gòu)的含義何在。
舉例來(lái)說(shuō),根目錄下面有一個(gè)子目錄/bin,用于存放二進(jìn)制程序。但是,/usr子目錄下面還有/usr/bin,以及/usr/local/bin,也用于存放二進(jìn)制程序;某些系統(tǒng)甚至還有/opt/bin。它們有何區(qū)別?
長(zhǎng)久以來(lái),我也感到很費(fèi)解,不明白為什么這樣設(shè)計(jì)。像大多數(shù)人一樣,我只是根據(jù)《Unix文件系統(tǒng)結(jié)構(gòu)標(biāo)準(zhǔn)》(Filesystem Hierarchy Standard),死記硬背不同目錄的區(qū)別。
昨天,我讀到了Rob Landley的簡(jiǎn)短解釋?zhuān)@才恍然大悟,原來(lái)Unix目錄結(jié)構(gòu)是歷史造成的。
話說(shuō)1969年,Ken Thompson和Dennis Ritchie在小型機(jī)PDP-7上發(fā)明了Unix。1971年,他們將主機(jī)升級(jí)到了PDP-11。
當(dāng)時(shí),他們使用一種叫做RK05的儲(chǔ)存盤(pán),一盤(pán)的容量大約是1.5MB。
沒(méi)過(guò)多久,操作系統(tǒng)(根目錄)變得越來(lái)越大,一塊盤(pán)已經(jīng)裝不下了。于是,他們加上了第二盤(pán)RK05,并且規(guī)定第一塊盤(pán)專(zhuān)門(mén)放系統(tǒng)程序,第二塊盤(pán)專(zhuān)門(mén)放用戶自己的程序,因此掛載的目錄點(diǎn)取名為/usr。也就是說(shuō),根目錄"/"掛載在第一塊盤(pán),"/usr"目錄掛載在第二塊盤(pán)。除此之外,兩塊盤(pán)的目錄結(jié)構(gòu)完全相同,第一塊盤(pán)的目錄(/bin, /sbin, /lib, /tmp...)都在/usr目錄下重新出現(xiàn)一次。
后來(lái),第二塊盤(pán)也滿了,他們只好又加了第三盤(pán)RK05,掛載的目錄點(diǎn)取名為/home,并且規(guī)定/usr用于存放用戶的程序,/home用于存放用戶的數(shù)據(jù)。
從此,這種目錄結(jié)構(gòu)就延續(xù)了下來(lái)。隨著硬盤(pán)容量越來(lái)越大,各個(gè)目錄的含義進(jìn)一步得到明確。
/:存放系統(tǒng)程序,也就是At&t開(kāi)發(fā)的Unix程序。
/usr:存放Unix系統(tǒng)商(比如IBM和HP)開(kāi)發(fā)的程序。
/usr/local:存放用戶自己安裝的程序。
/opt:在某些系統(tǒng),用于存放第三方廠商開(kāi)發(fā)的程序,所以取名為option,意為"選裝"。
(完)