Linux 目录层级结构

2025-09-29 20:57:00
丁国栋
原创 9
摘要:本文整理和汇总在Linux中关于目录层级的一些标准规范和相应知识。

首先应该了解 Linux 文件系统层次结构标准(FHS) Filesystem Hierarchy Standard

Linux下的配置文件存放位置一般有以下规律:

  1. 工具性软件的配置文件一般在 $HOME/.config/<包名称,例如go、nvim>/,也可以是$HOME/.<包名称,例如.azure、.aws、.ansible>/
  2. 如果一个工具性软件包的配置文件只有一个,可以放置在 $HOME/.<包名称,如.gitconfig、.bashrc>
  3. 系统级、服务类的配置文件一般在 /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:特殊用途(安全相关)。
发表评论
博客分类