J'ai récemment découvert /etc/environment
, qui semble être un moyen plus standard de configurer des variables d'environnement simples que des scripts, mais je me demandais s'il existait un moyen de référencer les variables d'environnement dans le fichier /etc/environment.
C'est-à-dire que j'ai ceci :
JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Si j'essaie d'ajouter $JAVA_HOME/bin
à la définition PATH, cependant, j'obtiens $JAVA_HOME/bin, et non la variable interpolée. Pour remédier à cela, je crée environment.sh dans profile.d pour ajouter le /bin
entrées dans le chemin, mais cela semble bâclé et désorganisé.
Existe-t-il un moyen de référencer les variables d'environnement dans /etc/environment ?
Meilleure réponse
Le /etc/environment
le fichier est lu par le pam_env
Module PAM. Il ne prend en charge que les paires clé-valeur simples, sans substitution sur le côté droit.
Si vous souhaitez construire la valeur avec des substitutions ou d'autres extensions de shell, vous devez passer par un shell. /etc/profile
(ou un fichier dans /etc/profile.d
) est le bon endroit pour ceux-ci. C'est l'endroit traditionnel (/etc/environment
est une innovation relativement récente, dans l'histoire des systèmes Unix), et il n'y a certainement rien de bâclé à l'utiliser. Le principal avantage de /etc/environment
est qu'il permet de définir des variables d'environnement même avec des méthodes de connexion qui n'impliquent pas de shell ou pour les utilisateurs qui utilisent un shell non Bourne, mais ce n'est pas courant dans la pratique.