/usr/share 是 Linux 桌面系统中一个极其核心的目录,遵循 FHS(文件系统层次结构标准) 。它的核心定位是:存储架构无关的、只读的、应用程序之间共享的数据。
简单理解:如果把系统比作一家公司,/usr/share 就是公司的"公共资料室",里面放着各个部门(应用程序)都能查阅的、不涉及机器底层细节(如 CPU 架构)的通用文档、图片、配置模板等。
核心特征
-
架构无关 (Architecture-independent) :里面的文件都是文本、图片、音频、配置文件等,不包含需要针对 x86、ARM 等不同 CPU 编译的二进制库文件(那些通常在
/usr/lib)。因此,这个目录可以在不同硬件架构的 Linux 系统之间直接挂载共享。 -
只读 (Read-only) :在正常使用中,应用程序和用户不应修改这里的文件。这是所有用户共享的系统级数据。用户自己的配置或数据应放在
/etc(系统配置)或~/.local/share(用户级私有数据)。 -
共享 (Shareable):里面的内容可以被网络中多台 Linux 主机共享(如通过 NFS 挂载),而不会引起冲突。
为什么 Linux 桌面用户需要了解它?
当你使用 Linux 桌面时,你看到、用到的大部分非程序本身的东西,都来自这里:
-
应用菜单条目:你从"开始菜单"启动 Firefox、LibreOffice 等程序,其图标、名称、启动命令等信息就来自这里。
-
图标和主题:你更换的整套图标、光标主题、GTK/Qt 程序界面样式,都存放在此。
-
字体:系统全局可用的字体文件。
-
帮助文档 :绝大多数命令行工具(如
ls,grep)的man手册页,以及很多 GUI 应用的帮助文件。
关键子目录详解(桌面用户视角)
下面是最常用、最重要的子目录:
| 子目录 | 用途 | 典型内容举例 |
|---|---|---|
applications/ |
桌面菜单项 (.desktop 文件) | firefox.desktop, org.gnome.Shell.desktop。 每个文件定义了一个程序在菜单中的显示方式。 你可以在这里复制一个 .desktop 文件到 ~/.local/share/applications/ 并修改,以自定义菜单项。 |
icons/ |
系统全局图标集 | Adwaita/, Papirus/, hicolor/。 包含应用程序图标、文件类型图标、状态图标等。 |
themes/ |
桌面环境主题 | Adwaita/, Yaru/, Breeze/。 控制窗口边框、控件(按钮、滚动条)的外观。 |
fonts/ |
系统全局字体 | truetype/, opentype/。 安装新字体到 ~/.local/share/fonts/ 仅对当前用户生效;放到 /usr/share/fonts/ 需 root 权限,对所有用户生效。 |
backgrounds/ |
系统默认壁纸 | gnome/, kde/。 发行版或桌面环境自带的壁纸图片。 |
sounds/ |
系统全局音效 | 登录、注销、错误提示等声音文件(如 .ogg, .wav)。 |
doc/ |
程序的详细文档 | firefox/, bash/ 子目录,内含 README, CHANGELOG, copyright 等。 通常是纯文本或 HTML 格式。 |
man/ |
传统 Unix 手册页 | man1/(用户命令), man8/(系统管理命令)。 man ls 命令读取的就是这里 man1/ls.1.gz 文件。 |
locale/ |
本地化(语言)翻译 | zh_CN/, en_US/ 等子目录。 包含应用程序的界面文字翻译(.mo 文件)。 这是你能看到中文界面的根本原因。 |
glib-2.0/schemas/ |
GSettings 架构 | org.gnome.desktop.background.gschema.xml。 定义了 GNOME/GTK 程序的配置项(dconf)的结构。 |
pixmaps/ |
遗留的像素图文件 | 一些老旧的、不遵循图标规范的 X11 应用程序会在此存放图标(.xpm 文件)。 |
mime/ |
MIME 类型定义 | packages/ 子目录下的 .xml 文件。 定义文件扩展名(如 .pdf)与 MIME 类型(如 application/pdf)及默认打开程序的关联。 |
applications/ |
(已提及,但重要) 菜单入口 | 补充:kde4/, gnome/ 等子目录可能包含针对特定环境的入口,但顶层是主要位置。 |
与 /usr/local/share 和 ~/.local/share 的区别
-
/usr/share:由包管理器 (如apt,dnf)管理的系统级共享数据。不要手动修改这里,否则下次软件更新会覆盖你的更改。 -
/usr/local/share:本地编译安装 的软件(./configure && make && make install且未指定--prefix)会默认将数据放这里。它由系统管理员(你)手动管理,不受包管理器控制。 -
~/.local/share:当前用户 的私有数据,相当于/usr/share的用户级版本。你安装的 Flatpak 应用数据、Steam 游戏存档、用户级字体和图标都在这。日常自定义应该优先使用这里 ,无需sudo。
一个日常操作示例:手动调整菜单项
假设你想隐藏 GNOME 菜单里的"帮助"条目(通常文件是 gnome-help.desktop):
- 先查看系统级文件内容(只读参考):
bash
cat /usr/share/applications/gnome-help.desktop
将它复制到用户目录(覆盖系统设置):
bash
cp /usr/share/applications/gnome-help.desktop ~/.local/share/applications/
编辑用户副本,添加一行 Hidden=true 保存。
bash
nano ~/.local/share/applications/gnome-help.desktop
- 重启桌面或注销重登,菜单项就消失了。系统级文件保持不变,下次 GNOME 更新也不会把你的修改覆盖掉------因为用户目录优先级更高。
总结
-
/usr/share是系统的"共享只读数据库",存放图标、主题、翻译、文档、菜单定义等通用数据。 -
它的设计目标是:节省空间(避免重复)、便于共享、架构无关。
-
作为用户 :通常只需读取它,不要直接修改。需要定制时,优先使用
~/.local/share进行覆盖。 -
磁盘占用 :这个目录可能相当大(几个 GB)。如果清理空间,不要随意删除这里的内容,应通过包管理器卸载软件。手动删除可能会导致程序运行异常。
理解了这个目录,你就掌握了 Linux 桌面"在哪里找图标"、"为什么菜单里会有那个程序"、"语言翻译文件在哪"等一系列问题的钥匙。