如何强制所有应用程序使用 $XDG_CONFIG_HOME 而不是 ~/.APP?

lof*_*ops 5 configuration configuration-management xdg xdg-base-directory

据我了解,XDG 指南建议应用程序将其配置存储在$XDG_CONFIG_HOME/APP(通常~/.config/APP)而不是~/.APP(我不确定是否也有 Debian/Ubuntu 指南?)。但是,我发现了许多使用旧~/.APP约定的配置文件和文件夹。

有没有办法全局强制非确认应用程序使用 XDG 文件夹约定?

还是我只需要为每个项目记录一张票?:D

drc*_*drc 5

我没有找到在全球范围内强制执行此类行为的方法,因为默认配置路径通常被硬编码到程序中。

如果您正在寻找一种简单的方法来备份所有配置,您可以在每个应用程序的基础上创建从~/.app到 的符号链接~/.config/app。不幸的是,虽然这不会让您的家变得杂乱,但所有配置文件都将被保存起来~/.config以便于备份。


Tom*_*ale 4

我在XDG Base Directory support中找到了一些优秀的配置信息。

这为设置以下内容提供了很好的提示:

export LESSHISTFILE="$XDG_CACHE_HOME"/less/history
Run Code Online (Sandbox Code Playgroud)

这样旧版配置/缓存/数据文件仍然可以使用 XDG 指定的目录。

我还需要添加我的~/.bashrc

# XDG - set defaults as they may not be set
# See https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
# and https://wiki.archlinux.org/title/XDG_Base_Directory#Support
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CACHE_HOME="$HOME/.cache"

if [ ! -w ${XDG_RUNTIME_DIR:="/run/user/$UID"} ]; then
  echo "\$XDG_RUNTIME_DIR ($XDG_RUNTIME_DIR) not writable. Unsetting." >&2
  unset XDG_RUNTIME_DIR
else
  export XDG_RUNTIME_DIR
fi
Run Code Online (Sandbox Code Playgroud)

Ubuntu 14.04 LTS 上默认未设置这些。

  • [来自官方文档](https://specations.freedesktop.org/basedir-spec/latest/ar01s03.html):如果`$XDG_CONFIG_HOME`未设置或为空,则默认值应等于`$HOME/.config被使用。`([另](https://superuser.com/a/425712/500826)) (2认同)