Unix(包含Linux)的初学者,常常会很困惑,不明白目录结构的含义何在。
举例来说,根目录下面有一个子目录/bin,用于存放二进制程序。但是,/usr子目录下面还有/usr/bin,以及/usr/local/bin,也用于存放二进制程序;某些系统甚至还有/opt/bin。它们有何区别?
长久以来,我也感到很费解,不明白为什么这样设计。像大多数人一样,我只是根据《Unix文件系统结构标准》(Filesystem Hierarchy Standard),死记硬背不同目录的区别。
昨天,我读到了Rob Landley的简短解释,这才恍然大悟,原来Unix目录结构是历史造成的。
话说1969年,Ken Thompson和Dennis Ritchie在小型机PDP-7上发明了Unix。1971年,他们将主机升级到了PDP-11。
当时,他们使用一种叫做RK05的储存盘,一盘的容量大约是1.5MB。
没过多久,操作系统(根目录)变得越来越大,一块盘已经装不下了。于是,他们加上了第二盘RK05,并且规定第一块盘专门放系统程序,第二块盘专门放用户自己的程序,因此挂载的目录点取名为/usr。也就是说,根目录"/"挂载在第一块盘,"/usr"目录挂载在第二块盘。除此之外,两块盘的目录结构完全相同,第一块盘的目录(/bin, /sbin, /lib, /tmp...)都在/usr目录下重新出现一次。
后来,第二块盘也满了,他们只好又加了第三盘RK05,挂载的目录点取名为/home,并且规定/usr用于存放用户的程序,/home用于存放用户的数据。
从此,这种目录结构就延续了下来。随着硬盘容量越来越大,各个目录的含义进一步得到明确。
/:存放系统程序,也就是At&t开发的Unix程序。
/usr:存放Unix系统商(比如IBM和HP)开发的程序。
/usr/local:存放用户自己安装的程序。
/opt:在某些系统,用于存放第三方厂商开发的程序,所以取名为option,意为"选装"。
(完)
java6ean 说:
阮哥刨根问底的精神,令人钦佩
2012年2月 6日 13:01 | # | 引用
傻傻呆呆去买面 说:
以前不知道直到我读了你的博客
2012年2月 6日 13:21 | # | 引用
镁光灯 说:
钦佩阮哥~!
2012年2月 6日 13:28 | # | 引用
Priezt 说:
解惑啊~~~~~~
2012年2月 6日 15:27 | # | 引用
hut 说:
前不久刚看到一篇相关的文章,Why Everyone Must Oppose The Merging of /usr and /, http://rusty.ozlabs.org/?p=236
2012年2月 6日 17:37 | # | 引用
xiaobo_l 说:
usr的定义在别的文章是说:unix software resource
有点困惑呢.. 曾经也以为usr是用户资料的意思.
2012年2月 6日 18:24 | # | 引用
Nopriler 说:
好像早些时候Fedora说,计划简化Unix的目录结构..有点期待..
2012年2月 6日 19:04 | # | 引用
血衫非弧 说:
哇~~~~~~原来是这样··
2012年2月 6日 19:07 | # | 引用
子奇 说:
我一直自作聪明把软件都装在/opt下,敢情就装错地方了
2012年2月 6日 20:32 | # | 引用
简单才是美 说:
一直想搞明白,那些目录都是怎么分出来的
2012年2月 6日 22:16 | # | 引用
shiyingyu 说:
有些人或系统还常用一个export目录,不知道怎么个来历。
2012年2月 6日 23:02 | # | 引用
m1a0 说:
鸟哥的私房菜里面好像是这么说的。
2012年2月 7日 09:51 | # | 引用
刘永新 说:
我是来学习的,不错,一直在关注阮老师的blog!
2012年2月 7日 09:52 | # | 引用
godspeed 说:
Filesystem Hierarchy Standard
文件系统层次标准。
http://www.pathname.com/fhs/
还有本相关的书籍:
http://book.douban.com/subject/3592797/
2012年2月 7日 13:59 | # | 引用
Jon 说:
并不完整,还有其他的路径呢?
2012年2月 7日 15:13 | # | 引用
土木坛子 说:
这种解释倒很容易让人记住,并且让人理解。
总之LINUX的目录结构死板固定,也有好处,不容易让用户改变。
2012年2月 8日 05:02 | # | 引用
ddmbr 说:
usr的意思是Unix Shared Resources.S for "Shared" but not "software"
2012年2月 8日 20:28 | # | 引用
高强 说:
你好 可以推荐几个IT技术博客不
2012年2月 9日 14:54 | # | 引用
AlsoTang 说:
我草。这真是解惑啊~
2012年2月13日 14:08 | # | 引用
vx13 说:
我记得那个 /usr 的来历在英文世界里本来就是有歧义的。
2012年2月16日 14:20 | # | 引用
vx13 说:
DMR 说过:
“In particular, in our own version of the system, there is a directory "/usr" which contains all user's directories, and which is stored on a relatively large, but slow moving head disk, while the othe files are on the fast but small fixed-head disk. ”
事实上, /usr 文件夹最开始就是用来放用户自己的文件的,后来,这个功能被 /home 取代了。现在, /user 的原意已经不重要了。可以认为,开始的时候,它的含义是 user ,后来,失去了原有的功能,说它现在的意思是系统资源也可以。
2012年2月16日 14:30 | # | 引用
zhang 说:
USR: Unix System Resources,更贴合后来的意思:存放Unix系统商(比如IBM和HP)开发的程序。
2012年2月16日 19:17 | # | 引用
thelover 说:
我分析usr目录一定是来源于user这个词, 应为dev opt 等等包括目录名和命令都是略写的英文单词的风格. 很少有取头字母的. 这符合unix的 KISS原则. 也很容易知道他的意义. 也是K&R的性格和习惯.
鸟哥的解释我认为是后来的演变所致.
2012年2月17日 11:08 | # | 引用
shenfeng 说:
linux 下 `man hire` hier - Description of the file system hierarchy 。 可以方便的查看一些介绍。
os x 也也可以
2012年6月 8日 09:54 | # | 引用
Asuka4J 说:
知道缘由,这下好记多了,赞一个
2013年7月 6日 13:11 | # | 引用
lrvy 说:
學習了,謝謝阮哥
2014年4月19日 20:47 | # | 引用
gosnb 说:
受教了。
其实这些典故细究起来蛮好玩的。早前我一直疑惑“回车”、“联机文档”这些字眼。弄明白了,也蛮有趣的。某天纠结“esc”键到底用哪个指头按,郁闷好久。最后看到早期的写“vi”的那款机器键盘,明白了。
2014年8月 9日 23:39 | # | 引用
我有一头小毛驴 说:
希望博主经常更新下博客,多写一些有营养的东西。 哈哈,让我等更加茁壮的成长
2014年9月17日 17:23 | # | 引用
凡隐 说:
我终于理解明白了,哈哈哈哈
2016年10月21日 10:47 | # | 引用
学习 说:
好多知识博主讲来也不多,大家都就明白了,学校学了那么久啥也没学会
2016年11月 9日 13:43 | # | 引用
zoollcar 说:
跟着博主真是学到不少,言简意赅。
2017年2月 3日 00:05 | # | 引用
大陆第一风水师 说:
我之前听我老师说的一种,因为世界上有很多发行版本嘛,然后为了统一规划,不然就乱套了,不知道对不对
2019年5月14日 23:48 | # | 引用
郭嘉豪 说:
你的博客真的写的通俗易懂,太棒了!!!!我上那么多年学都雨里雾里的,在你这看看都看懂了!!!!!!十分感谢!!!真庆幸找到了你的博客!!
2019年8月16日 13:02 | # | 引用
abcd8866 说:
推荐《Unix & Linux大学教程》,此书中这些历史典故全都有,包括阮老师这篇文章的内容,在这本书中讲得清清楚楚,是 unix 历史和命令讲解的最佳图书。
2020年2月21日 22:21 | # | 引用