La spécification XDG parle de la variable XDG_CONFIG_HOME
, mais ne spécifie pas où elle doit être définie. Devrions-nous le définir dans /etc/X11/Xsession
, ou est-ce le fichier de configuration du gestionnaire de fenêtres qui doit le définir?
J'ai essayé de le déclarer dans/etc/environment en tant que
XDG_CONFIG_HOME="$HOME/.config"
mais cela n'a pas fonctionné, car il semble que $ HOME n'est pas défini lorsque /etc/environment
est analysé.
La seule documentation que j'ai pu trouver en ligne était pour Gentoo, où elle a été déclarée dans /etc/env.d/90xsession
J'utilise Ubuntu. Quelle serait la solution générale pour les distributions basées sur Debian?
Dans Arch Linux, ceci est défini par /etc/profile
, à l'aide d'un script /etc/profile.d
.
Pour Debian/Ubuntu, s’il existe un /etc/profile.d
- créez un script similaire à l’intérieur; si un tel répertoire n'existe pas - éditez /etc/profile
itsef.
export XDG_CONFIG_HOME="$HOME/.config"
Le fichier /etc/environment
est analysé par pam_env
, qui le traite comme une simple affectation nom = valeur. Cependant, il a aussi /etc/security/pam_env.conf
, qui supporte le développement variable et peut être utilisé à cette fin.
vous n'avez pas besoin de le définir n'importe où, sauf si vous souhaitez modifier la valeur par défaut.
La spécification de l'annuaire de base XDG indique clairement:
Si
$XDG_CONFIG_HOME
n'est pas défini ou est vide, une valeur par défaut égale à$HOME/.config
doit être utilisée.
Il est donc redondant de le définir à la valeur par défaut. Toutes les applications conformes utiliseront déjà $HOME/.config
Mais si vous faites voulez changer la valeur par défaut dans un système Debian/Ubuntu, le meilleur endroit est:
/etc/profile
~/.profile
J'ai constaté qu'il était préférable de définir des variables d'environnement via PAM. Pour les distos Linux modernes, cela signifie /etc/environment
ou $HOME/.pam_environment
(voir man pam_env
). Vous pouvez également les définir dans /etc/security/pam_env.conf
en utilisant une syntaxe spéciale. Voici comment définir mes variables XDG dans /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
Auparavant, je mettrais ces variables dans /etc/profile.d/custom.sh
. Cependant, certaines applications démarrent avant la lecture de ce fichier. Le passage à la méthode PAM a résolu le problème pour plusieurs applications qui se comportaient de cette manière.