web-dev-qa-db-fra.com

Changer les variables d'environnement

Je viens de changer mon fichier /etc/environment en:

M2_HOME=/usr/local/Apache-maven/Apache-maven-3.1.1
M2=$M2_HOME/bin
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH=$M2:$PATH
Java_HOME=/usr/local/jdk1.6.0_45
PATH=$Java_HOME:$PATH

(essayer de faire quelque chose de similaire à this )

Cependant, lorsque j'ai essayé de vérifier les variables d'environnement en tapant, par exemple, echo "$M2", le résultat est une ligne vide pour toutes les variables et $ PATH est identique à celui utilisé avant la modification du fichier. Pourquoi mes modifications n'ont-elles pas fonctionné? J'ai essayé de fermer et d'ouvrir le shell, mais rien ne se passe.

3
teaLeef

/etc/environment prend une nouvelle connexion pour prendre effet, car il est traité par PAM lors de la connexion. En outre, comme @przemo l’a noté, il n’est pas exécuté ou créé en tant que script, les variables ne sont donc pas développées. Placez ces variables dans un fichier .sh dans /etc/profile.d/:

Sudo tee -a /etc/profile.d/my_vars.sh <<"EOF"
export M2_HOME=/usr/local/Apache-maven/Apache-maven-3.1.1
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export Java_HOME=/usr/local/jdk1.6.0_45
export PATH=$Java_HOME:$PATH
EOF

Cela demandera également une nouvelle connexion pour prendre pleinement effet, mais vous pouvez le tester immédiatement en exécutant un shell de connexion:

$ bash -l
$ echo $PATH
/usr/local/jdk1.6.0_45:/usr/local/Apache-maven/Apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Comme Gunnar l'a fait remarquer, l'affectation par défaut de PATH devrait rester dans /etc/environment et ne devrait pas être ajoutée au script ci-dessus. Voir cette page wiki de la communauté pour plus d'informations.

3
muru

/etc/environment n'est pas un fichier de script, vous ne pouvez pas utiliser de variables. Pour en savoir plus, je le recommande https://help.ubuntu.com/community/EnvironmentVariables

2
przemo