/usr 目录,这里的usr 不是 user 的缩写,而是 Unix Software Resource 的缩写
/usr
目录在类Unix系统(如Linux)中是非常重要的一个目录,它主要用于存放系统软件资源,下面为你详细介绍:
- 目录结构特点
/usr
是一个层次化的目录结构,包含了众多子目录,每个子目录都有特定用途,用于组织和管理不同类型的软件和数据。
- 主要子目录及其功能
/usr/bin
:- 存放着系统用户(普通用户和超级用户)可执行的二进制程序文件。这些程序是系统正常运行以及用户日常操作所必需的,例如常见的文本处理工具
grep
、文件管理工具ls
、网络工具ping
等都存放在此目录下。当你在终端输入这些命令时,系统首先会在这个目录中查找对应的可执行文件。
- 存放着系统用户(普通用户和超级用户)可执行的二进制程序文件。这些程序是系统正常运行以及用户日常操作所必需的,例如常见的文本处理工具
/usr/sbin
:- 主要存放系统管理员(root 用户)使用的系统管理类二进制可执行文件。像系统服务管理命令
service
、网络配置命令ifconfig
(在较新的系统中部分功能被ip
命令替代,但ifconfig
可能仍存在这里)等。普通用户通常没有执行这些命令的权限,因为它们涉及到系统关键配置和管理操作。
- 主要存放系统管理员(root 用户)使用的系统管理类二进制可执行文件。像系统服务管理命令
/usr/lib
:- 保存了系统和应用程序运行时所依赖的共享库文件。共享库是一些可被多个程序同时使用的代码和数据集合,这样可以避免每个程序都包含相同的代码段,从而节省磁盘空间和内存。例如,很多C语言编写的程序可能依赖于
libc.so
(C标准库),这个库文件就可能存放在/usr/lib
目录下(不同系统和架构下具体路径可能有细微差异)。此外,该目录还包含一些用于支持特定硬件架构或软件功能的插件和模块。
- 保存了系统和应用程序运行时所依赖的共享库文件。共享库是一些可被多个程序同时使用的代码和数据集合,这样可以避免每个程序都包含相同的代码段,从而节省磁盘空间和内存。例如,很多C语言编写的程序可能依赖于
/usr/include
:- 包含了C和C++等编程语言的头文件。头文件中定义了函数原型、数据结构、宏等,程序在编译时需要这些头文件来正确解析和链接相关的函数与变量。例如,当你编写一个使用标准输入输出函数(如
printf
)的C程序时,就需要包含<stdio.h>
头文件,这个文件就位于/usr/include
目录中。开发人员在编译程序时,编译器会到这个目录寻找所需的头文件。
- 包含了C和C++等编程语言的头文件。头文件中定义了函数原型、数据结构、宏等,程序在编译时需要这些头文件来正确解析和链接相关的函数与变量。例如,当你编写一个使用标准输入输出函数(如
/usr/share
:- 存放着与体系结构无关的共享数据,包括各种程序的帮助文档、配置文件模板、图标、字体等。例如,
/usr/share/doc
目录下存放着许多软件包的详细文档,可供用户查看软件的使用说明、版本信息、更新日志等;/usr/share/icons
目录包含了系统和应用程序使用的各种图标文件。
- 存放着与体系结构无关的共享数据,包括各种程序的帮助文档、配置文件模板、图标、字体等。例如,
/usr/local
:- 这是一个非常有用的目录,主要用于存放本地安装的软件。当系统管理员自行编译安装软件,而不是通过系统默认的软件包管理器安装时,通常会将软件安装到这个目录下。这样做的好处是可以避免与系统自带的软件产生冲突。它具有类似
/usr
的子目录结构,如/usr/local/bin
存放本地安装软件的可执行文件,/usr/local/lib
存放本地安装软件的库文件等。
- 这是一个非常有用的目录,主要用于存放本地安装的软件。当系统管理员自行编译安装软件,而不是通过系统默认的软件包管理器安装时,通常会将软件安装到这个目录下。这样做的好处是可以避免与系统自带的软件产生冲突。它具有类似
- 与其他目录的区别
- 与
/bin
和/sbin
目录相比,/bin
和/sbin
主要存放系统启动和基本运行所必需的最核心的二进制文件,这些文件在系统启动的早期阶段就会被用到,而/usr/bin
和/usr/sbin
中的文件更多是系统安装完成后,用于提供各种常规和管理功能的程序,并非系统启动绝对必需。 - 与
/home
目录不同,/home
主要用于存放用户个人的数据和配置文件,每个用户都有自己独立的home
目录(如/home/user1
),而/usr
是用于存放系统级别的软件资源,供所有用户共享使用。
- 与