Я пытаюсь запустить скрипт установки, который требует установки Java и установки JAVA_HOME
переменной окружения.
Я установил JAVA_HOME
в , /etc/profile
а также в файле я назвал java.sh
в /etc/profile.d
. Я могу echo $JAVA_HOME
и получить правильный ответ, и я могу даже sudo echo $JAVA_HOME
и получить правильный ответ.
В то, install.sh
что я пытаюсь запустить, я вставил echo $JAVA_HOME
. Когда я запускаю этот скрипт без sudo
я вижу директорию Java; когда я запускаю скрипт с sudo
ним пустым.
Есть идеи, почему это происходит?
Я использую CentOS.
sudo
environment-variables
мистифицировать
источник
источник
Ответы:
По соображениям безопасности
sudo
может очищать переменные среды, поэтому он, вероятно, не получает $ JAVA_HOME. Посмотрите в вашем/etc/sudoers
файле дляenv_reset
.От
man sudoers
:Итак, если вы хотите, чтобы он сохранил JAVA_HOME, добавьте его в env_keep:
В качестве альтернативы , установите
JAVA_HOME
в корне~/.bash_profile
.источник
Запустите sudo с параметром -E (сохранить среду) (см. Файл man) или вставьте JAVA_HOME в скрипт install.sh.
источник