Ich versuche, ein Installationsskript auszuführen, für das Java installiert und die JAVA_HOME
Umgebungsvariable festgelegt werden muss.
Ich habe festgelegt JAVA_HOME
in /etc/profile
und auch in einer Datei habe ich genannt java.sh
in /etc/profile.d
. Ich kann echo $JAVA_HOME
und bekomme die richtige Antwort und ich kann sogar sudo echo $JAVA_HOME
und bekomme die richtige Antwort.
In den install.sh
ich versuche zu rennen habe ich ein eingefügt echo $JAVA_HOME
. Wenn ich dieses Skript ohne sudo
Java ausführe, wird das Java-Verzeichnis angezeigt. Wenn ich das Skript mit sudo
ihm starte, ist es leer.
Irgendwelche Ideen, warum das passiert?
Ich lasse CentOS laufen.
Antworten:
sudo
Möglicherweise werden aus Sicherheitsgründen Umgebungsvariablen gelöscht, weshalb $ JAVA_HOME wahrscheinlich nicht abgerufen wird. Suchen Sie in Ihrer/etc/sudoers
Datei nachenv_reset
.Von
man sudoers
:Wenn Sie möchten, dass JAVA_HOME beibehalten wird, fügen Sie es zu env_keep hinzu:
Alternativ setzen Sie
JAVA_HOME
in root's~/.bash_profile
.quelle
Führen Sie sudo mit der Option -E (Umgebung beibehalten) aus (siehe man-Datei) oder fügen Sie JAVA_HOME in das Skript install.sh ein.
quelle