web-dev-qa-db-fra.com

Où la variable XDG_CONFIG_HOME doit-elle être définie?

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?

36
NOLFXceptMe

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.

23
grawity

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:

  • Pour un changement à l’échelle du système, affectant tous les utilisateurs: /etc/profile
  • Pour votre utilisateur seulement: ~/.profile
49
MestreLion

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.

3
carlwgeorge