在Linux操作系统中,/usr
目录是一个核心且容易引发困惑的概念。它既承载着历史演变的痕迹,又在现代系统中承担着关键功能。本文将从定义、结构、历史演变及常见问题等角度,全面解析usr
的含义及其在Linux中的作用。
一、usr
的起源与定义
1. 词源争议
- 早期含义 :
usr
最初是User 的缩写,用于存放用户主目录(类似于现代的/home
)。例如,用户john
的目录路径曾为/usr/john
。 - 现代定义 :随着系统发展,
/usr
被重新诠释为Unix System Resources (Unix系统资源)或User Shareable Read-only(用户共享只读资源),其核心功能转向存储系统级软件和共享资源。
2. 历史演变
- 在Unix早期版本中,
/usr
是用户主目录的默认位置。由于存储设备容量限制,新增硬盘挂载到/usr
下存放非核心程序。 - 随着用户规模扩大,
/home
目录独立出来专门存放用户数据,而/usr
逐渐成为系统软件资源的集中地。
二、/usr
目录的结构与核心功能
/usr
采用模块化设计,包含多个子目录,每个子目录承担特定职责:
子目录 | 作用 |
---|---|
/usr/bin |
存放用户级可执行文件(如ls , cp ),非系统启动必需。 |
/usr/sbin |
系统管理员工具(如useradd , dhcpcd ),需root权限执行。 |
/usr/lib |
共享库文件(如.so 文件),支持应用程序运行。 |
/usr/include |
C/C++头文件,供开发时引用函数和数据结构。 |
/usr/share |
架构无关的共享数据(文档、字体、图标等)。 |
/usr/local |
本地安装软件的默认目录,避免与系统包管理器冲突。 |
/usr/src |
存放内核或第三方软件的源代码(部分发行版可能不强制使用)。 |
特点:
- 只读性:多数内容为只读,确保系统稳定性。
- 独立性:常挂载为独立分区,便于备份和恢复。
三、/usr
与其他目录的关系
-
/bin
vs/usr/bin
/bin
:存放启动和修复系统必需的基础命令(如bash
,mount
)。/usr/bin
:用户级应用程序,非系统核心功能依赖。
-
/usr/local
的特殊性- 用于手动编译安装的软件(如从源码安装的Python或Nginx),与包管理器(如
apt
或yum
)管理的软件隔离。 - 类比Windows的
Program Files
,但更注重权限隔离。
- 用于手动编译安装的软件(如从源码安装的Python或Nginx),与包管理器(如
-
/opt
的补充作用- 存放第三方预编译的大型软件(如IDE、数据库),与
/usr/local
形成互补。
- 存放第三方预编译的大型软件(如IDE、数据库),与