XDG 用户目录
- xdg-user-dirs 是一个工具,用于帮助管理“众所周知”的用户目录,例如桌面文件夹和音乐文件夹。它还处理文件名的本地化(即翻译)。
- 它的工作方式是在登录阶段的早期运行 xdg-user-dirs-update(1)。此程序读取配置文件和一组默认目录。然后,它在用户主目录中创建这些目录的本地化版本,并在
$XDG_CONFIG_HOME/user-dirs.dirs
(XDG_CONFIG_HOME
默认为~/.config
) 中设置一个配置文件,应用程序可以读取该文件以查找这些目录。
大多数 文件管理器 使用特殊图标指示 XDG 用户目录。
安装
创建默认目录
通过运行以下命令,可以在 $HOME
目录中自动创建一套完整的本地化默认用户目录
$ xdg-user-dirs-update
提示: 要强制创建英文命名的目录,可以使用
LC_ALL=C.UTF-8 xdg-user-dirs-update --force
。执行后,它还将自动
- 创建本地
~/.config/user-dirs.dirs
配置文件:供应用程序查找和使用特定于帐户的主目录。 - 创建本地
~/.config/user-dirs.locale
配置文件:用于根据正在使用的区域设置语言。
用户服务 xdg-user-dirs-update.service
也将默认安装和启用,以便通过在每个登录会话开始时运行此命令来保持目录的最新状态。
创建自定义目录
本地 ~/.config/user-dirs.dirs
和全局 /etc/xdg/user-dirs.defaults
配置文件都使用以下环境变量格式来指向用户目录:XDG_DIRNAME_DIR="$HOME/directory_name"
一个示例配置文件可能如下所示(这些都是模板目录)
~/.config/user-dirs.dirs
XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOCUMENTS_DIR="$HOME/Documents" XDG_DOWNLOAD_DIR="$HOME/Downloads" XDG_MUSIC_DIR="$HOME/Music" XDG_PICTURES_DIR="$HOME/Pictures" XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_VIDEOS_DIR="$HOME/Videos"
由于 xdg-user-dirs 将读取本地配置文件以指向相应的用户目录,因此可以指定自定义文件夹。例如,如果在 ~/.config/user-dirs.dirs
中,XDG_DOWNLOAD_DIR
变量的自定义文件夹命名为 $HOME/Internet
,则任何使用此变量的应用程序都将使用此目录。
注意: 与许多配置文件一样,本地设置会覆盖全局设置。还需要创建任何新的自定义目录。
或者,也可以使用命令行指定自定义文件夹。例如,以下命令将产生与上述配置文件编辑相同的结果
$ xdg-user-dirs-update --set DOWNLOAD ~/Internet
查询已配置的目录
设置完成后,可以使用 xdg-user-dirs 查看任何用户目录。例如,以下命令将显示 Templates
目录的位置,这当然对应于本地配置文件中的 XDG_TEMPLATES_DIR
变量
$ xdg-user-dir TEMPLATES
警告:
xdg-user-dir
不应从未经检查的输入接收其参数,因为它只是将其传递给 eval
而不执行任何健全性检查,在一行代码中如下所示eval echo \${XDG_${1}_DIR:-$HOME}这意味着
xdg-user-dir
方便了从未经净化的输入执行任意代码。除非上游修复了这种不安全的实现,否则 xdg-user-dir
应该只用于硬编码或经过严格审计的参数。