Я запускаю Ubuntu 11.04. Я использую терминал для запуска сеанса bash, и я хочу добавить переменную среды:
$r@hajt:~$ env THEVAR=/example
Но это не работает. Он показывает, что все переменные с THEVAR являются последними, но другой вызов env больше не показывает THEVAR - env | grep THEVAR ничего не возвращает.
Аналогично, скрипты с экспортом (export THEVAR=/example) или другие назначения переменных (THEVAR=/example) не добавляют переменную среды.
Я знаю, что я делаю что-то неправильно, я знаю, что это должно быть что-то простое, но я просто не могу найти что.
UPDATE: реальный смысл моего вопроса был следующим: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling -shell
(В любом случае я выберу самый проголосовавший ответ и оставлю отредактированный заголовок - это было не то, что я просил)
env запускает программу в модифицированном среда, затем отклоняет все изменения.
Чтобы установить переменную среды один раз, используйте команду export в приглашении, а не в сценарии оболочки:
$ export THEVAR=/example
Переменная будет установлена для остальной части сеанса оболочки или до unset.
Чтобы каждый раз задавать переменную окружения, используйте команду export в файле .bashrc (или соответствующий файл инициализации для вашей оболочки).
Чтобы установить среду переменную из скрипта, используйте команду export в скрипте, а затем source сценарий. Если вы выполните скрипт, это не сработает.
Для объяснения разницы между поиском и выполнением см. Этот ответ: https://superuser.com/questions/176783/what-is-the-difference -between-выполнение-а-баш-скрипт-и-Sourcing-а-баш-скрипт / 176788 # 176788
Чтобы постоянно добавлять новую переменную среды в Ubuntu (проверяется только в 14.04), выполните следующие действия:
Откройте терминал (нажав CtrlAltT) sudo -H gedit /etc/environment Введите свой пароль Редактируйте текстовый файл просто открыт: например если вы хотите добавить FOO=bar, то просто напишите FOO=bar в новой строке. Сохраните его. После сохранения, выхода и входа снова. Внесены необходимые изменения.Чтобы изменения среды / var сохранялись после завершения скрипта, вы должны использовать source ./script.sh или сокращенную нотацию для источника «.», например . ./script.sh
Источник будет выполняться команды в скрипте, как если бы вы их набрали ... поэтому он меняет некоторые аспекты скрипта, такие как выход ... поэтому, если ваш скрипт что-то проверяет и решает выйти, если false, например, посредством вызова [ f3], он прекратит ваш текущий сеанс терминала / оболочки.
Если вы делаете что-то с помощью скрипта, один простой способ установить переменную окружения навсегда, то в вашем скрипте указывается ниже оператора
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
. Если вам нужно оценивать выражения типа pwd, вы можете использовать это , например,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc