1 votes

Pourquoi j'ajoute un chemin à ~/.bash_profile et le source, mais il n'y a aucun effet ?

Dans mon install.sh :

# other commands to install java...
echo 'export JAVA_HOME="/usr/java/latest"' >> ~/.bash_profile
source ~/.bash_profile

Après l'exécution de ce script, je tape echo $JAVA_HOME mais rien ne s'affiche, mais lorsque j'exécute la commande source à partir du Shell actuel, JAVA_HOME s'affiche lorsque je le relance.

Pourquoi mon script ne fonctionne-t-il pas et comment puis-je y remédier ?

Je suis ssh sur un CentOS 7 frais et je lance le script ci-dessus.

2voto

Rachel Blackman Points 81

Install.sh s'exécute dans un sous-shell avec son propre environnement. Dans cet environnement, vous définissez JAVA_HOME avec succès.

Si install.sh avec son sous-shell est terminé, son environnement disparaît également. Un subshell ne peut pas définir une variable dans son processus d'appel.

Si vous lancez install.sh avec source install.sh il ne s'exécute pas dans un sous-shell et vous pouvez définir JAVA_HOME. Mais Je ne sais pas si les autres lignes de code dans install.sh sont préparées pour s'exécuter via source .

0voto

Archemar Points 1647

JAVA_HOME est une variable d'environnement, cependant, si vous laissez le script dans lequel vous sourcez .bash_profile sa valeur disparaîtra.

La bonne nouvelle, c'est que la prochaine fois que vous vous connectez, la valeur devrait être fixée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X