Переменные среды принадлежат процессу, запущенный процесс не может изменить среду другого запущенного процесса, когда при создании нового процесса экспортированные переменные parent устанавливаются в дочерний процесс по умолчанию, переменные среды, измененные в дочернем процессе, могут ' не влияет на родительский процесс.
GRB=/apps/[...].lic
установит для переменной GRB
значение в процессе bash
, которое можно увидеть, например, с помощью echo "$GRB"
, но эта переменная не экспортируется, что означает, что при вызове matlab
для matlab
процесса Переменная окружения GRB
не будет установлена. Использование export GRB
перед вызовом matlab
приведет к экспорту переменной в процесс matlab.
Существует также синтаксис для установки переменной среды для нового процесса без влияния на текущий процесс bash: GRB=/apps/[...].lic /share/apps/[...]/matlab ...
.
Для получения более подробной информации man bash
/export
/^ENVIRONMENT
Также сравните вывод следующих команд: set (встроенная функция bash, «функция», новый процесс не создан), env (/ usr / bin / env команда, новый процесс создан и видит только экспортированные переменные)
$ set
$ env
первая показывает переменные, тогда как вторая среда является подмножеством первой.