J'essaie d'exécuter un script d'installation qui nécessite l'installation de Java et la JAVA_HOME
définition de la variable d'environnement.
Je l' ai mis JAVA_HOME
dans /etc/profile
et aussi dans un fichier que je l' ai appelé java.sh
dans /etc/profile.d
. Je peux echo $JAVA_HOME
et obtenir la bonne réponse et je peux même sudo echo $JAVA_HOME
et obtenir la bonne réponse.
Dans le install.sh
J'essaie de courir, j'ai inséré un echo $JAVA_HOME
. Lorsque j'exécute ce script sans, sudo
je vois le répertoire java; lorsque j'exécute le script, sudo
il est vide.
Des idées pourquoi cela se produit?
J'utilise CentOS.
Réponses:
Pour des raisons de sécurité,
sudo
peut effacer les variables d'environnement, c'est pourquoi il ne récupère probablement pas $ JAVA_HOME. Cherchez dans votre/etc/sudoers
dossierenv_reset
.De
man sudoers
:Donc, si vous voulez qu'il conserve JAVA_HOME, ajoutez-le à env_keep:
Sinon , définissez
JAVA_HOME
dans root~/.bash_profile
.la source
Exécutez sudo avec l'option -E (préserver l'environnement) (voir le fichier man) ou placez JAVA_HOME dans le script install.sh.
la source