Linux系统XDG用户特定目录规范和环境变量

Linux系统XDG用户特定目录规范和环境变量

📅 2024-05-11 | 🖱️
🔖 linux

XDG Base Directory Specification(XDG基础目录规范)是由freedesktop.org提出的一项标准,用于统一Linux和类Unix系统中应用程序配置文件、缓存文件、数据文件等的存储位置。该规范旨在改善文件系统的整洁性、支持用户和系统配置的分离,并使应用程序行为更可预测。

在未采用XDG规范的传统系统中,应用程序可能会将配置文件、数据文件、缓存等混杂存放在用户主目录的顶层,例如:

1~/.vimrc
2~/.mozilla/
3~/.bash_history

这会导致目录混乱、不便备份与迁移。XD 规范通过引入一套环境变量,使不同类型的数据归类存储到指定路径,提高了系统组织性。

核心环境变量 #

XDG规范定义了以下几个关键环境变量:

变量名默认值用途
XDG_CONFIG_HOME$HOME/.config用户特定的配置文件存储位置
XDG_DATA_HOME$HOME/.local/share用户特定的数据文件存储位置
XDG_CACHE_HOME$HOME/.cache用户特定的缓存文件存储位置
XDG_STATE_HOME$HOME/.local/state用户特定的状态文件,如历史记录
XDG_RUNTIME_DIR由系统设置(如 /run/user/1000用户运行时临时文件的路径(权限受限)

上面环境变量都是用户特定范围的,此外,还有两个用于系统范围默认路径的变量:

  • XDG_CONFIG_DIRS(默认/etc/xdg
  • XDG_DATA_DIRS(默认/usr/local/share:/usr/share

示例 #

假设某应用名为 myapp,它可以在以下路径中存储数据:

  • 配置文件:$XDG_CONFIG_HOME/myapp/config.ini~/.config/myapp/config.ini
  • 缓存文件:$XDG_CACHE_HOME/myapp/cache.json~/.cache/myapp/cache.json
  • 数据文件:$XDG_DATA_HOME/myapp/data.db~/.local/share/myapp/data.db

注意

应用程序需明确遵守此规范才会受益。某些老旧软件可能仍使用旧的配置路径(例如 ~/.<program>)。

XDG_BIN_HOME #

XDG_BIN_HOME不是XDG Base Directory Specification标准规范中的一部分,但被很多开发者或构建系统作为一种惯例使用,用于指定用户本地的可执行文件目录。

XDG_BIN_HOME通常表示:$HOME/.local/bin,用于存放用户安装的本地可执行程序。

虽然XDG_BIN_HOME没有被官方规范所定义,但在构建工具、用户脚本、安装器中,常用它来统一可执行文件的路径,便于用户将其加入PATH中:

1export PATH="$HOME/.local/bin:$PATH"

示例 #

例如rust的cargo会将可执行文件安装在$HOME/.cargo/bin。我们就可以设置:

1export XDG_BIN_HOME="$HOME/.local/bin"
2ln -s ~/.cargo/bin/some_tool $XDG_BIN_HOME/

参考 #

© 2025 青蛙小白 | 总访问量 | 总访客数