Может ли скрипт изменить переменную среды своей вызывающей оболочки? [Дубликат]

У этого вопроса уже есть ответ: BASH-скрипт для установки переменных среды не работает 4 ответа

Я устанавливаю свой JAVA_HOME в свой файл ~ / .bashrc.

Теперь, Мне нужно создать скрипт, который изменит JAVA_HOME только для текущего терминала, так что я могу запустить приложение, которое нуждается в java 5.

Я создал этот скрипт для выполнения эта задача, но после завершения я вижу, что JAVA_HOME не обновляется

export JAVA_HOME=/usr/lib/jvm/java-5-oracle/
export PATH=$PATH:$JAVA_HOME    

Вот результат

$ ./javaHome5.sh
$ echo $JAVA_HOME
/usr/lib/jvm/java-6-oracle/

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

В настоящее время единственный способ, который я нашел вокруг этого:

1) Измените мой ~ / .bashrc и измените ~ / .bashrc var

2) Запустите $ source ~/.bashrc, чтобы применить изменения в текущем терминале. Который снова не может быть применен в скрипте, так как команда ~ / .bashrc должна быть запущена в текущем окне.

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

У вас есть идеи, как я могу изменить этот var с помощью скрипта?

1
задан 9 June 2016 в 14:59

0 ответов

Другие вопросы по тегам:

Похожие вопросы: