linux中/usr的由来及内容

深入探讨Linux/usr目录的历史演变,从用户家目录到系统核心资源,解析其内部结构和作用,揭示其在系统中的重要地位。

在 linux 文件结构中,有一个很神奇的目录 —— /usr。之前一直没有怎么关注过它,反正程序都是安装在里边的,也没有什么值得追根溯源的东西。直到有一天 fedora 要简化整个文件系统体系,看到讨论才想到,usr 到底是什么的缩写呢,它又是怎么来的呢?

本文转自Delectat.com

讨论中,大部分观点认为:

  • usr 是 unix system resources 的缩写;
  • usr 是 user 的缩写;
  • usr 是 unix software resources 的缩写。

根据常识判断,是 user 缩写的可能性不大,因为和 /home 冲突了嘛。不过是 system resources 还是 software resources 的缩写还真不好说。特此查了好多东西,却发现竟然连 wikipedia 也模棱两可

后来终于找到了 相关的文档和介绍。(viacache

/usr usually contains by far the largest share of data on a system. Hence, this is one of the most important directories in the system as it contains all the user binaries, their documentation, libraries, header files, etc…. X and its supporting libraries can be found here. User programs like telnet, ftp, etc…. are also placed here. In the original Unix implementations, /usr was where the home directories of the users were placed (that is to say, /usr/someone was then the directory now known as /home/someone). In current Unices, /usr is where user-land programs and data (as opposed to ’system land’ programs and data) are. The name hasn’t changed, but it’s meaning has narrowed and lengthened from “everything user related” to “user usable programs and data”. As such, some people may now refer to this directory as meaning ‘User System Resources’ and not ‘user’ as was originally intended.(via 1,2

/usr 是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,x,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。

曾经的 /usr 还是用户的家目录,存放着各种用户文件 —— 现在已经被 /home 取代了(例如 /usr/someone 已经改为 /home/someone)。现代的 /usr 只专门存放各种程序和数据,用户目录已经转移。虽然  /usr 名称未改,不过其含义已经从“用户目录”变成了“unix 系统资源”目录。值得注意的是,在一些 unix 系统上,仍然把 /usr/someone 当做用户家目录,如 Minix。

至此,真相大白。看来就像前一阵子的 /var/run 移到 /run 一样。

真的是不看不知道,一看吓一跳呀。原来 linux 几经进化,好多目录的诞生和用途已经产生了根本的变化。历史车轮在前进,长江后浪推前浪,正所谓:学习历史,收获真知;尽心竭力,前进不止。

附录:/usr 目录结构

  • /usr/bin : 所有可执行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 内的);
  • /usr/include : 各种头文件,编译文件等时需要使用;
    • /usr/include/’package-name’ : 程序特定的头文件;
  • /usr/lib : 所以可执行文件所需要的库文件;
  • /usr/local : /usr 通常只包含系统发行时自带的程序,而 /usr/local 则是本地系统管理员用来自由添加程序的目录;
  • /usr/X11R6 : x 系统的二进制文件,库文件,文档,字体等。它不等同于 /usr 的作用,只有 x 才能调用这些库文件等,其他程序不读取或者使用。因为 linux 没有原生图形界面,而且 linux 大部分情况下是 for server 的,所以图形界面没有意义;其中 X11R6 代表 version 11 release 6;
    • /usr/X11R6/bin : x 的二进制文件,包含运行 x 的必须文件;
    • /usr/X11R6/include : x 相关的头文件;
    • /usr/X11R6/lib : x 库文件;
    • /usr/X11R6/lib/modules : x 的模块,启动时加载。缺少 video4linux, DRI and GLX 和 输入输出设备 模块,将工作不正常;
    • /usr/X11R6/lib/X11/fonts : x font server 的字体文件;
  • /usr/doc : 文档。实际是 /usr/share/doc 的软链接;
  • /usr/etc : 一个极少用到的配置文件存放地;
  • /usr/games : 曾经包含游戏等文件,现在很少用到;
  • /usr/info : 系统相关信息,是 /usr/share/info 的软链接;
  • /usr/man : man 手册,已经移至 /usr/share/man
  • /usr/sbin : 类似 /sbin,root 可以执行。但此目录不包含在环境变量 $PATH 中,它包含的程序类似于 chroot, useradd, in.tftpd and pppconfig;
  • /usr/share : 它包含了各种程序间的共享文件,如字体,图标,文档等。(/usr/local 对应的目录是  /usr/loca/share);
    • /usr/share/doc : 类似应用程序的 man 手册。它包含程序的说明文件,默认配置文件等;
    • /usr/share/info : 不常用,已经被 man 代替;
    • /usr/share/man : app 的 manual;
    • /usr/share/icons : 应用程序的图标等文件,分为 png,svg 等多种格式;
    • /usr/share/fonts : 字体文件,系统范围内可使用,~/.fonts 仅当前用户可用;
  • /usr/src : linux 内核的源码和说明文档等;
    • /usr/src/linux : linux 源代码;
    • /usr/src/linux/.config : 内核编译过程产生的文件;通常由命令 ‘make config’ , ‘make menuconfig’ 或 ‘make xconfig’ 执行后产生;
    • /usr/src/linux/.depend, /usr/src/linux/.hdepend : ‘make dep’ 检测编译依赖时需要的文件,由 /usr/src/linux/.config 产生;
    • /usr/src/linux/COPYING : GNU license;
    • /usr/src/linux/Makefile : 编译内核所需的 Makefile;
    • /usr/src/linux/Rules.make : 当有多个 Makefile 时,根据它的规则执行 make;
  • /usr/tmp : 已经被众多发行版抛弃的临时文件夹。
<think>好的,我现在需要回答用户关于Linux系统中`/usr/sbin``/sbin`目录的区别用途的问题。首先,我得回忆一下这两个目录的基本信息。记得在Linux的文件系统层次结构标准(FHS)中,`/sbin`通常存放系统管理员使用的重要命令,比如系统启动、修复、恢复等关键工具。而`/usr/sbin`可能包含更多非关键的或供系统管理员使用的应用程序,这些可能在系统启动后才会用到。 接下来,我需要确认这些信息是否正确。可能需要查阅FHS的文档或者权威资料。例如,FHS指出`/sbin`存放的是在系统启动、修复或恢复时必需的系统二进制文件,而`/usr/sbin`则用于安装系统管理员使用的非必要系统管理命令。这种区分可能在早期Unix系统中更为明显,因为那时`/usr`可能挂载为单独的分区,导致启动时需要访问的工具必须放在根分区的`/sbin`中。 然后,我需要考虑用户可能的疑惑点,比如为什么会有两个类似的目录,它们的使用场景有何不同。可能需要用具体的例子来说明,比如`init`、`ip`可能在`/sbin`中,而`httpd`、`sshd`可能在`/usr/sbin`中。同时,现代系统中是否存在合并或符号链接的情况,比如某些发行版将`/sbin`链接到`/usr/sbin`,这也需要提及。 另外,需要确保回答符合用户给出的格式要求,正确使用LaTeX的数学表达式格式(虽然这个问题可能用不到太多数学),结构清晰,并生成相关问题。还要注意引用标识的添加,比如在提到FHS时加上引用标记。 最后,检查是否有遗漏的信息或可能的错误,确保回答准确无误,并且语言通俗易懂,适合各种层次的用户理解。同时,生成的相关问题需要与主题紧密相关,能够帮助用户进一步学习相关内容。</think>在Linux系统中,`/sbin``/usr/sbin`目录都用于存放系统管理相关的可执行文件,但它们的定位使用场景有明确区别: ### 1. `/sbin`目录 - **用途**:存放**系统启动、修复恢复必需的核心命令**,例如`init`(系统初始化)、`ip`(网络配置)、`fdisk`(磁盘分区)等[^1] - **权限要求**:通常需要`root`权限才能执行 - **路径特点**:位于根分区,确保系统在最小化启动或救援模式时仍能访问 ### 2. `/usr/sbin`目录 - **用途**:存放**非核心的系统管理工具**,例如`httpd`(Web服务)、`sshd`(SSH服务)、`cron`(定时任务)等[^1] - **权限要求**:多数命令需要`root`权限,但部分工具普通用户也可查看帮助信息 - **路径特点**:属于`/usr`层级,在系统完成基础启动后才会挂载 ### 3. 历史演进 早期Unix系统将`/usr`作为独立分区,系统启动时需先加载根分区中的基础工具(`/sbin`),再挂载`/usr`分区使用其他工具(`/usr/sbin`)。现代Linux发行版多采用合并设计,例如: ```bash # 查看符号链接关系 ls -l /sbin # 可能指向/usr/sbin ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值