Próbuję uruchomić skrypt instalacyjny, który wymaga zainstalowania języka Java i ustawienia JAVA_HOME
zmiennej środowiskowej.
Mam ustawione JAVA_HOME
w /etc/profile
, a także w pliku Zadzwoniłem java.sh
w /etc/profile.d
. Mogę echo $JAVA_HOME
uzyskać prawidłową odpowiedź, a nawet mogę sudo echo $JAVA_HOME
uzyskać prawidłową odpowiedź.
W install.sh
próbuję uruchomić, wstawiłem echo $JAVA_HOME
. Kiedy uruchamiam ten skrypt, nie sudo
widzę katalogu java; kiedy uruchamiam skrypt z sudo
nim jest pusty.
Wszelkie pomysły, dlaczego tak się dzieje?
Używam CentOS.
Odpowiedzi:
Ze względów bezpieczeństwa
sudo
może usuwać zmienne środowiskowe, dlatego prawdopodobnie nie odbiera $ JAVA_HOME. Poszukaj w swoim/etc/sudoers
plikuenv_reset
.Od
man sudoers
:Jeśli więc chcesz, aby zachował JAVA_HOME, dodaj go do env_keep:
Alternatywnie , ustaw
JAVA_HOME
w katalogu głównym~/.bash_profile
.źródło
Uruchom sudo z opcją -E (zachowaj środowisko) (zobacz plik man) lub umieść JAVA_HOME w skrypcie install.sh.
źródło