65 votes

Où déclarer les variables d'environnement ?

Quels sont les bons endroits pour :

  1. Des variables d'environnement globales censées affecter tous les utilisateurs ?
  2. Variables d'environnement spécifiques à l'utilisateur ?

84voto

Jeff Hubbard Points 5292

Pour compléter la réponse de Sagarchalise, je peux résumer ce que le lien suggère comme endroits appropriés pour les réglages.

Pour les paramètres globaux, les variables d'environnement du système

  • Utilisez /etc/environment
  • N'utilisez pas /etc/profile o /etc/bash.bashrc

De la page :

/etc/environment [...] est spécifiquement destiné à la variabilité de l'environnement des variables d'environnement. Il ne s'agit n'est pas un fichier script, mais se compose plutôt d'expressions d'affectation, une par ligne. Plus précisément, ce fichier stocke les paramètres régionaux et les chemins d'accès du système.

Utilisation de /etc/profile est une façon très Unix de procéder, mais sa fonctionnalité est grandement réduite sous Ubuntu. Il n'existe que pour pointer vers /etc/bash.bashrc et de recueillir les entrées de /etc/profile.d .

Sur mon système, la seule entrée intéressante dans profile.d est /etc/profile.d/bash_completion.sh .

Pour les paramètres locaux ou par utilisateur

La page Ubuntu recommande ~/.pam_environment qui est chargé par le système PAM lorsque votre session est lancée (TTY, GUI, SSH, etc.). C'est l'équivalent pour l'utilisateur de /etc/environment et utilise la même syntaxe. Le lien suggère des alternatives si cela ne fonctionne pas :

  • ~/.profile pour la plupart des coquilles. Ce fichier peut également être appliqué à votre session GUI par le gestionnaire d'affichage, mais ce n'est pas forcément le cas pour tous les gestionnaires d'affichage ou serveurs d'affichage (X11 vs Wayland) ou sessions.

Et spécifique aux bashs :

  • ~/.bash_profile o ~./bash_login - Si l'un d'entre eux existe, bash l'exécute à la place de ~/.profile lorsque bash est lancé en tant que login Shell. Bash préférera ~/.bash_profile à ~/.bash_login . [...] Ces fichiers n'influenceront pas une session graphique par défaut."
  • ~/.bashrc - "... peut être l'endroit le plus facile pour fixer des variables".

17voto

rck Points 151

7voto

John Sibly Points 9805

Tu l'as :

/etc/profile : fichier .profile à l'échelle du système pour l'interpréteur de commandes Bourne Shell (sh(1)) et les shells compatibles Bourne (bash(1), ksh(1), ash(1), ...).

qui dans Lucid et Maverick fonctionnent

/etc/profile.d/*.sh

s'il est présent, et si le Shell de l'utilisateur est bash :

/etc/bash.bashrc

Pour l'environnement utilisateur, il existe un tableau confus spécifique au Shell et s'il est considéré comme un "Shell de connexion". Si le Shell est bash :

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

pour sh/dash :

$HOME/.profile

pour zsh, je ne vais même pas essayer pour donner un sens à tout cela .

5voto

Alain O'Dea Points 541

Comme recommandé sur https://help.ubuntu.com/community/EnvironmentVariables :

  1. Les variables d'environnement globales destinées à affecter tous les utilisateurs doivent être placées dans le dossier suivant /etc/environment .

  2. Les variables d'environnement spécifiques à l'utilisateur doivent être définies dans ~/.pam_environment .

Évitez les fichiers profile et rc pour définir les variables d'environnement sur Ubuntu. Ils m'ont causé plus de maux de tête qu'ils n'en valent la peine.

Mais c'est plus facile à dire qu'à faire ;)

Il est possible que vous rencontriez le même problème de configuration que moi. Voir la solution de contournement pour la maison cryptée ci-dessous.

Mon ~/.pam_environment :

PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK        DEFAULT=${HOME}/Applications/jdk

Pourquoi cet affreux chemin statique ? ${PATH} ne fonctionnerait pas pour moi. J'ai cassé mon login plusieurs fois en essayant de le contourner, donc je m'en tiens à l'horrible copie statique des valeurs par défaut :)

Solution de contournement pour les dossiers personnels chiffrés

Dans les versions d'Ubuntu jusqu'à et y compris Precise 12.04 Beta 2, si vous utilisez un répertoire personnel crypté, vous devrez modifier /etc/pam.d/common-session pour qu'il se charge ~/.pam_environment . Cette solution fonctionne apparemment pour les versions antérieures, mais je ne l'ai pas testée.

Guenther Montag (g-montag) a écrit le 2010-08-19 :

Cela semble être un problème avec les répertoires personnels chiffrés. J'ai ajouté

session requise pam_env.so

à la fin de /etc/pam.d/common-session et maintenant ~/.pam_environment est lu. Sur un autre système sans répertoires personnels chiffrés (également 10.04), la solution n'est pas nécessaire. Peut-être que dans mon cas, le système essaie de lire ~/.pam_environment avant qu'il ne soit décrypté.

Adapté de ma réponse sur Super User : https://superuser.com/a/408373/66856

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