Référencement des variables d’environnement * dans * / etc / environment?

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 revenir en arrière des 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’append $JAVA_HOME/bin à la définition PATH, j’obtiens $ JAVA_HOME / bin, et non la variable interpolée. Pour remédier à cela, je crée environment.sh dans profile.d pour append les entrées /bin au 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?

Le fichier /etc/environment est lu par le module PAM pam_env . Il ne prend en charge que des paires clé-valeur simples, sans substitution du côté droit.

Si vous souhaitez générer la valeur avec des substitutions ou d’autres extensions du shell, vous devez passer par un shell. /etc/profile (ou un fichier dans /etc/profile.d ) est le bon endroit pour cela. C’est l’endroit traditionnel ( /etc/environment est une innovation relativement récente, dans l’histoire des systèmes Unix), et son utilisation n’est en aucun cas déréglée. 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 n’impliquant pas de shell, ni pour les utilisateurs utilisant un shell autre que Bourne, mais elles ne sont pas courantes.

La documentation Ubuntu donne à penser que cela semble impossible. MAIS, il y a une réponse.

REPONSE : Créez des variables d’environnement persistantes à l’échelle du système dans /etc/.bashrc

 JAVA_HOME="/tools/java" ... PATH="$JAVA_HOME:$PATH" 

Détails:
Voici quelques détails supplémentaires dans la documentation relative aux variables d’environnement .
La recommandation officielle est d’utiliser /etc/environment , comme vous l’avez essayé. Le problème est que ce fichier n’est pas un fichier de script. En d’autres termes, vous ne pouvez pas utiliser de variables dans les déclarations de variables.

La documentation continue avec 2 autres fichiers “non recommandés”
/etc/profile et /etc/bash.bashrc .

/etc/profile “appelle simplement le fichier /etc/bash.bashrc”. Alors choisissez plutôt

/etc/bash.bashrc car “Ubuntu est configuré par défaut pour exécuter ce fichier chaque fois qu’un utilisateur entre dans un shell ou dans l’environnement de bureau.”