当前位置: 首页 > news >正文

Unix目录结构的来历

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,意为"选装"。

相关文章:

  • Localizing WPF with .resx files
  • 转载:进程上下文、中断上下文及原子上下文
  • fstream, operator, operator
  • 图像检索(2):均值聚类-构建BoF
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • c# is和as的区别
  • 各种面试题 挺好 挺重要 项目中 有用 的地方
  • Nginx 1.正向代理与反向代理
  • C++ 运行单个实例,防止程序多次启动
  • systemC的安装
  • 利用hadoop来解决“共同好友”的问题
  • zabbix监控apache
  • 创建Windows窗体 : WinMain() 与 WndProc()
  • 不要再被骗了------QQ盗号原理大揭秘
  • Heroku安装与使用
  • 2017 年终总结 —— 在路上
  • 3.7、@ResponseBody 和 @RestController
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Hibernate最全面试题
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • LeetCode18.四数之和 JavaScript
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • maya建模与骨骼动画快速实现人工鱼
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • socket.io+express实现聊天室的思考(三)
  • vuex 学习笔记 01
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 工作中总结前端开发流程--vue项目
  • 离散点最小(凸)包围边界查找
  • 如何解决微信端直接跳WAP端
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 探索 JS 中的模块化
  • 我是如何设计 Upload 上传组件的
  • 硬币翻转问题,区间操作
  • puppet连载22:define用法
  • #DBA杂记1
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.ajax,axios,fetch三种ajax请求的区别
  • $refs 、$nextTic、动态组件、name的使用
  • (9)目标检测_SSD的原理
  • (C语言)二分查找 超详细
  • (四)Android布局类型(线性布局LinearLayout)
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • ::before和::after 常见的用法
  • @Import注解详解
  • [ SNOI 2013 ] Quare
  • []sim300 GPRS数据收发程序
  • [20150321]索引空块的问题.txt
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法