В моем install.sh:

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

После запуска этого сценария я echo $JAVA_HOME , но ничего не отображается, но когда я выполняю source команду из текущей оболочки, JAVA_HOME отображается, когда я повторяю его снова.

Почему мой скрипт не работает и как мне это исправить?

Я ssh к свежему CentOS 7 и запускаю приведенный выше скрипт.

2 ответа2

1

install.sh работает в подоболочке со своей собственной средой. В этой среде вы установили JAVA_HOME успешным.

Если install.sh с его подоболочкой завершен, его среда также исчезла. Подоболочка не может установить переменную в своем вызывающем процессе.

Если вы запускаете install.sh с source install.sh он не запускается в подоболочке, и вы можете установить JAVA_HOME. Но я не знаю, готовы ли другие строки кода в install.sh запускаться через source .

0

JAVA_HOME - это переменная окружения, однако, если вы оставите скрипт, в котором вы используете исходный .bash_profile , его значение исчезнет.

хорошая новость заключается в том, что при следующем входе в систему должно быть установлено значение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .