Est-il valide d'avoir des "pointeurs" dans/etc/environment en utilisant la syntaxe $ FOO? En ce moment, mon/etc/environment ressemble à ceci:
Java_HOME=/usr/lib/jvm/Java-6-openjdk
MAVEN_HOME=/usr/bin/Apache-maven/Apache-maven-3.0.4
M2_HOME=$MAVEN_HOME
M2=$MAVEN_HOME/bin
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$Java_HOME/bin:$MAVEN_HOME/bin
Je ne reçois pas les résultats que j'attendais cependant:
~$ echo $Java_HOME
/usr/lib/jvm/Java-6-openjdk
~$ echo $MAVEN_HOME
/usr/bin/Apache-maven/Apache-maven-3.0.4
~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/bin:/usr/games:$Java_HOME/bin:$MAVEN_HOME/bin
Je n'ai pas trouvé beaucoup de documentation sur /etc/environment
, mais la raison pour laquelle les choses ne fonctionnent pas comme prévu est que ce n'est "pas un fichier de script" et qu'il n'est donc pas traité par le shell. variable définie ne fonctionne pas. Cela explique le comportement que vous observez.
Vous feriez mieux de définir ces types de variables d’environnement dans votre maison, dans .profile
ou .bashrc
, ou si vous en avez besoin pour tous les utilisateurs, dans /etc/profile.d
ou /etc/bash.bashrc
.
Il existe une documentation assez complète sur la définition des variables d'environnement ici , et elle indique soit .profile
, soit .bashrc
comme emplacement privilégié pour placer ces éléments.
Vous pouvez utiliser des pointeurs dans /etc/environment
mais vous devez utiliser une syntaxe différente:
essayer:
Java_HOME=/usr/lib/jvm/Java-6-openjdk
MAVEN_HOME=/usr/bin/Apache-maven/Apache-maven-3.0.4
M2_HOME=${MAVEN_HOME}
M2=${MAVEN_HOME}/bin
PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${Java_HOME}/bin:${MAVEN_HOME}/bin"
Utilisez les accolades {}
autour des noms de variable lorsque vous vous référez à une autre affectation de variable. Ainsi, au lieu de $Java_HOME
, utilisez ${Java_HOME}
. Il semble également nécessaire de placer des guillemets autour de la valeur d'une variable dans laquelle vous avez un pointeur sur d'autres variables:
alors PATH="... ${SOME_VAR} ..."
La documentation Ubuntu donne à penser que cela semble impossible. MAIS, il y a une réponse.
RÉPONSE: crée des variables d'environnement persistantes à l'échelle du système dans /etc/bash.bashrc
Java_HOME="/tools/Java"
...
PATH="$Java_HOME:$PATH"
Détails:
J'ai posté une réponse plus longue sur ce question AskUbunt