65 votes

Où devrait être définie la variable XDG_CONFIG_HOME ?

La spécification XDG parle de la variable XDG_CONFIG_HOME, mais ne spécifie pas où elle doit être définie. Devrions-nous la 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 comme suit

XDG_CONFIG_HOME="$HOME/.config"

mais cela n'a pas fonctionné, car il semble que $HOME ne soit pas défini lorsque /etc/environment est analysé.

La seule documentation que j'ai pu trouver en ligne était pour Gentoo, où il était déclaré dans /etc/env.d/90xsession

J'utilise Ubuntu. Quelle serait la solution générale pour les distributions basées sur Debian ?

82voto

MestreLion Points 2107

Vous n'avez pas besoin de le définir quelque part, sauf si vous voulez changer la valeur par défaut.

Spécification du Répertoire de Base XDG dit clairement :

Si $XDG_CONFIG_HOME n'est pas défini ou est vide, une valeur par défaut égale à $HOME/.config devrait ê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 voulez changer la valeur par défaut dans un système Debian/Ubuntu, le meilleur endroit est :

  • Pour un changement global, affectant tous les utilisateurs : /etc/profile
  • Pour votre utilisateur seulement : ~/.profile

35voto

James Mertz Points 390

Sous Arch Linux, ceci est défini par /etc/profile, en utilisant 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 - modifiez /etc/profile lui-même.

export XDG_CONFIG_HOME="$HOME/.config"

Le fichier /etc/environment est analysé par pam_env, qui le traite comme de simples affectations de noms=valeurs. Cependant, il y a aussi /etc/security/pam_env.conf, qui prend en charge l'expansion de variables et peut être utilisé à cette fin.

9voto

carlwgeorge Points 329

J'ai trouvé que la meilleure façon de définir les variables d'environnement est via PAM. Pour les distributions 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 je définis 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 définissais ces variables dans /etc/profile.d/custom.sh. Cependant, certaines applications démarrent avant que ce fichier ne soit lu. Passer à la méthode PAM a résolu le problème pour plusieurs applications qui se comportaient de cette manière.

8voto

MuddyArch Points 81

En développant sur les points des autres réponses concernant le réglage des variables aux valeurs par défaut :

Si l'on est d'accord avec les valeurs par défaut énoncées dans la spécification, définir des variables d'environnement pour dupliquer ces valeurs par défaut (c'est-à-dire en définissant $XDG_CONFIG_HOME=$HOME/.config) n'est pas inutile ou stupide. Tous les programmes ne suivront pas correctement la spécification, et le fait d'avoir la variable définie peut rendre la copie et le collage beaucoup plus faciles.

Par exemple, NVIDIA utilise XDG_CACHE_HOME s'il est défini, sinon il fait incorrectement appel à ~/.nv au lieu de ~/.cache. Et vous pouvez facilement attendre des années avant que quelque chose comme cela ne soit corrigé.

De plus, cette page est un bon endroit pour obtenir un ensemble de variables d'environnement pour forcer certains programmes à utiliser vos répertoires définis. Copier et coller 20 d'entre eux et ensuite ajuster le chemin est plus de travail que de devoir définir les variables XDG.

Et pour ajouter quelque chose de spécifique à la question initiale : cette page contient des informations sur où définir les variables.

3voto

smac89 Points 190

Pour les utilisateurs de Zsh, définissez-le dans votre fichier .zshenv ~/.zprofile

export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X