Linux 目录层级结构
- 2025-09-29 20:57:00
- 丁国栋
- 原创 111
首先应该了解 Linux 文件系统层次结构标准(FHS) Filesystem Hierarchy Standard。
Linux下的配置文件存放位置一般有以下规律:
- 工具性软件的配置文件一般在 $HOME/.config/<包名称,例如go、nvim>/,也可以是$HOME/.<包名称,例如.azure、.aws、.ansible>/
- 如果一个工具性软件包的配置文件只有一个,可以放置在 $HOME/.<包名称,如.gitconfig、.bashrc>
- 系统级、服务类的配置文件一般在 /etc/<包名称,例如apache2、nginx>/
注意有点“.”和无点的区分,有点是隐藏文件或目录。
在Linux系统中,$HOME/.config 和 $HOME/.local 都是用户级别的配置和数据目录,但它们的用途和规范有所不同:
1. $HOME/.config
- 作用:存储用户应用程序的配置文件(通常是非GUI或GUI程序的配置)。
- 规范依据:遵循 https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html(由 freedesktop.org 制定)。
- 典型内容:
- 程序的配置文件(如
~/.config/gtk-3.0/settings.ini)。 - 某些应用的缓存或状态信息(如
~/.config/dconf/user)。
- 程序的配置文件(如
- 特点:
- 替代传统散落在
$HOME下的隐藏文件(如~/.programrc)。 - 结构化更强,通常按应用名称分目录存储。
- 替代传统散落在
2. $HOME/.local
- 作用:存储用户级别的应用程序数据、二进制文件和资源,分为三个子目录:
~/.local/share:应用专属数据(如游戏存档、数据库等)。~/.local/bin:用户自行安装的可执行文件(通常需手动添加到$PATH)。~/.local/lib:用户级别的库文件(较少见)。
- 规范依据:同样遵循 XDG 规范。
- 典型内容:
share/:字体、图标、应用数据(如~/.local/share/fonts/)。bin/:用户编译或下载的脚本/工具(如pip install --user安装的 Python 工具)。
- 特点:
- 类似系统级的
/usr/local,但仅对当前用户有效。 - 避免污染系统目录,适合无 root 权限时的软件管理。
- 类似系统级的
主要区别
| 目录 | 主要用途 | 类比系统目录 | 典型场景 |
|---|---|---|---|
~/.config |
配置文件 | /etc |
编辑应用的设置文件 |
~/.local |
数据、可执行文件、资源 | /usr/local |
用户自行安装工具或存储数据 |
为什么需要区分?
- 模块化:避免所有文件混在
$HOME下,便于备份(如只备份~/.config而忽略~/.local/cache)。 - 兼容性:现代应用应遵循 XDG 规范,但传统应用可能仍直接使用
~/.programrc。
其他相关目录
~/.cache:临时缓存(可安全删除)。~/.gnupg、~/.ssh:特殊用途(安全相关)。
发表评论