Linux桌面/usr/share详解

/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):

  1. 先查看系统级文件内容(只读参考):
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
  1. 重启桌面或注销重登,菜单项就消失了。系统级文件保持不变,下次 GNOME 更新也不会把你的修改覆盖掉------因为用户目录优先级更高。

总结

  • /usr/share 是系统的"共享只读数据库",存放图标、主题、翻译、文档、菜单定义等通用数据。

  • 它的设计目标是:节省空间(避免重复)、便于共享、架构无关。

  • 作为用户 :通常只需读取它,不要直接修改。需要定制时,优先使用 ~/.local/share 进行覆盖。

  • 磁盘占用 :这个目录可能相当大(几个 GB)。如果清理空间,不要随意删除这里的内容,应通过包管理器卸载软件。手动删除可能会导致程序运行异常。

理解了这个目录,你就掌握了 Linux 桌面"在哪里找图标"、"为什么菜单里会有那个程序"、"语言翻译文件在哪"等一系列问题的钥匙。

相关推荐
123过去2 小时前
rsmangler使用教程
linux·测试工具·安全
小码吃趴菜2 小时前
服务器预约系统linux小项目-第九节课
linux·运维·服务器
柴_笔记2 小时前
linux之UDP之组播通信
linux·udp·组播
mingjie12122 小时前
mac virtualbox虚拟机 ubuntu-server openclaw 访问配置
linux·运维·ubuntu·openclaw
藤谷性能2 小时前
Ubuntu 22.04:在双硬盘电脑上安装Ubuntu 22.04单系统
linux·运维·ubuntu
藤谷性能2 小时前
Ubuntu 22.04:安装后的工作
linux·运维·ubuntu
米糕闯编程2 小时前
Linux(CentOS10)安装、启动Redis8.6.2
linux·运维·服务器
Bert.Cai2 小时前
Linux ls命令详解
linux·运维
qq_297574672 小时前
【Kafka系列·入门第四篇】Kafka实操入门:环境部署(Windows/Linux)+ 简单消息收发
linux·windows·kafka