跳转至内容

XDG 用户目录

来自 ArchWiki

来自 freedesktop.org

xdg-user-dirs 是一个用于帮助管理“众所周知”的用户目录(如桌面文件夹和音乐文件夹)的工具。它还处理文件名的本地化(即翻译)。
其工作原理是在登录阶段的非常早期运行 xdg-user-dirs-update(1)。该程序会读取配置文件和一组默认目录,然后在用户主目录下创建这些目录的本地化版本,并在 $XDG_CONFIG_HOME/user-dirs.dirsXDG_CONFIG_HOME 默认为 ~/.config)中设置一个配置文件,供应用程序读取以查找这些目录。

大多数 文件管理器 会使用特殊图标来标识 XDG 用户目录。

安装

安装 xdg-user-dirs

注意 某些 桌面环境 可能已经预装了该工具,例如 GNOME

创建默认目录

$HOME 目录下自动创建全套本地化的默认用户目录,可以通过运行以下命令完成:

$ xdg-user-dirs-update
提示 若要强制创建英文名称的目录,可以使用 LC_ALL=C.UTF-8 xdg-user-dirs-update --force

执行时,它还将自动:

  • 创建本地 ~/.config/user-dirs.dirs 配置文件:由应用程序用于查找和使用特定于账户的主目录。
  • 创建本地 ~/.config/user-dirs.locale 配置文件:用于根据当前使用的 locale 设置语言。

用户服务 xdg-user-dirs.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_PROJECTS_DIR="$HOME/Projects"
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 应当仅与硬编码或经过严格审核的参数一起使用。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.