34

Спецификация XDG говорит о переменной XDG_CONFIG_HOME , но не указывает, где она должна быть определена. Должны ли мы определить это в /etc/X11/Xsession , или это файл конфигурации оконного менеджера, который должен это определить?

Я попытался объявить его в /etc /environment как

XDG_CONFIG_HOME="$HOME/.config"

но это не сработало, так как кажется, что $ HOME не определен при /etc/environment .

Единственная документация, которую я мог найти в Интернете, была для Gentoo, где она была объявлена в /etc/env.d/90xsession

Я использую Ubuntu. Каково будет общее решение для дистрибутивов на основе Debian?

3 ответа3

45

Вам не нужно нигде определять его, если вы не хотите изменить значение по умолчанию.

В спецификации XDG Base Directory четко сказано:

Если $XDG_CONFIG_HOME либо не установлен, либо пуст, следует использовать значение по умолчанию, равное $HOME/.config .

Поэтому избыточно определять его по умолчанию. Все совместимые приложения уже будут использовать $HOME/.config

Но, если вы хотите изменить настройки по умолчанию в системе Debian/Ubuntu, лучшее место:

  • Для общесистемного изменения, затрагивающего всех пользователей: /etc/profile
  • Только для вашего пользователя: ~/.profile
21

В Arch Linux это определяется в /etc/profile с использованием скрипта /etc/profile.d .

Для Debian/Ubuntu, если есть /etc/profile.d - создайте аналогичный скрипт внутри; если такой директории не существует - отредактируйте /etc/profile itsef.

export XDG_CONFIG_HOME="$HOME/.config"

Файл /etc/environment анализируется pam_env , который обрабатывает его как простые присвоения имени = значения. Однако он также имеет /etc/security/pam_env.conf , который поддерживает расширение переменных и может использоваться для этой цели.

2

Я обнаружил, что лучше всего устанавливать переменные окружения через PAM. Для современных дистрибутивов Linux это означает /etc/environment или $HOME/.pam_environment (см. man pam_env). Вы также можете установить их в /etc/security/pam_env.conf используя специальный синтаксис. Вот как я устанавливаю свои переменные XDG в /etc/security/pam_env.conf .

XDG_CACHE_HOME  DEFAULT=@{HOME}/.xdg/cache
XDG_CONFIG_HOME DEFAULT=@{HOME}/.xdg/config
XDG_DATA_HOME   DEFAULT=@{HOME}/.xdg/data
XDG_STATE_HOME  DEFAULT=@{HOME}/.xdg/state

Ранее я устанавливал эти переменные в /etc/profile.d/custom.sh . Однако некоторые приложения запускаются до того, как этот файл будет прочитан. Переход на метод PAM решил проблему для нескольких приложений, которые вели себя таким образом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .