Unix目录结构的来历
fmms 13年前
Unix(包含 Linux)的初学者,常常会很困惑,不明白目录结构的含义何在。 <p style="text-align:center;"><img alt="Unix目录结构的来历" src="https://simg.open-open.com/show/1b90689437eaceab03c741218ad5719c.jpg" width="545" height="120" /></p> <p> 举例来说,根目录下面有一个子目录/bin,用于存放二进制程序。但是,/usr 子目录下面还有/usr/bin,以及/usr/local/bin,也用于存放二进制程序;某些系统甚至还有/opt/bin。它们有何区别?</p> <p> 长久以来,我也感到很费解,不明白为什么这样设计。像大多数人一样,我只是根据<a href="/misc/goto?guid=4958328255512040308" target="_blank">《Unix 文件系统结构标准》</a>(Filesystem Hierarchy Standard),死记硬背不同目录的区别。</p> <p> 昨天,我读到了 Rob Landley 的<a href="/misc/goto?guid=4958328256350440968" target="_blank">简短解释</a>,这才恍然大悟,原来 Unix 目录结构是历史造成的。</p> <p> 话说 1969 年,<a href="/misc/goto?guid=4958328257160856082" target="_blank">Ken Thompson</a> 和 <a href="/misc/goto?guid=4958198165973333302" target="_blank">Dennis Ritchie</a> 在小型机 PDP-7上发明了 Unix。1971年,他们将主机升级到了 PDP-11。</p> <p style="text-align:center;"><img style="width:559px;height:450px;" alt="Unix目录结构的来历" src="https://simg.open-open.com/show/62d9cb9115367cb2f442f62281336099.jpg" /></p> <p> 当时,他们使用一种叫做 RK05 的储存盘,一盘的容量大约是1.5MB。</p> <p style="text-align:center;"><img style="width:562px;height:421px;" alt="Unix目录结构的来历" src="https://simg.open-open.com/show/13285c6c5d8b34ebd55b2e45036d8559.jpg" /></p> <p> 没过多久,操作系统(根目录)变得越来越大,一块盘已经装不下了。于是,他们加上了第二盘 RK05,并且规定第一块盘专门放系统程序,第二块盘专门放用户自己的程序,因此挂载的目录点取名为/usr。也就是说,根目录"/"挂载在第一块盘," /usr"目录挂载在第二块盘。除此之外,两块盘的目录结构完全相同,第一块盘的目录(/bin, /sbin, /lib, /tmp...)都在/usr 目录下重新出现一次。</p> <p> 后来,第二块盘也满了,他们只好又加了第三盘 RK05,挂载的目录点取名为/home,并且规定/usr 用于存放用户的程序,/home 用于存放用户的数据。</p> <p> 从此,这种目录结构就延续了下来。随着硬盘容量越来越大,各个目录的含义进一步得到明确。</p> <p> <strong>/</strong>:存放系统程序,也就是 At&t开发的 Unix 程序。</p> <p> <strong>/usr</strong>:存放 Unix 系统商(比如 IBM 和 HP)开发的程序。</p> <p> <strong>/usr/local</strong>:存放用户自己安装的程序。</p> <p> <strong>/opt</strong>:在某些系统,用于存放第三方厂商开发的程序,所以取名为 option,意为"选装"。<br /> <br /> 来自: <a id="link_source2" href="/misc/goto?guid=4958328258715122507" target="_blank">阮一峰的网络日志</a></p>