web-dev-qa-db-fra.com

"Pointeurs" avec $ Syntax dans / etc / environment

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
6
Tyson Trautmann

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.

7
roadmr

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} ..."

2
mkhezr

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

1
csi