Wiki

Экспорт переменных

В ОС UNIX существует понятие процесса. Процесс возникает тогда, когда запускается на выполнение какая-либо команда (расчет).

Например, при наборе на клавиатуре "р " порождается процесс расчета "р". В свою очередь "р" может породить другие процессы. Допустим, что "р" вызывает расчеты "р1" и "р2", которые последовательно порождают соответсвующие процессы.

У каждого процесса есть своя среда - множество доступных ему переменных. Например, до запуска расчета "р" уже существовала среда, в которой уже были определены некоторые переменные (о стандартных переменных речь пойдет несколько позже). Запуск "р" порождает новую среду; уже в ней будут порождены расчеты "р1" и "р2".

Переменные локальны в рамках процесса, в котором они объявлены, т.е. где им присвоены значения (описание переменных отсутсвует - они все одного типа). Для того, чтобы они были доступны и другим порождаемым процессам, надо передать их явным образом. Для этого используется встроенная команда "export".

Пример.
Пусть расчет (командный файл) "p", имеющий вид:

     # расчет p
     echo Расчет p
     varX=0 varY=1
     echo varX=$varX varY=$varY
     export varY
     p1  # вызов расчета p1
     p2  # вызов расчета p2
     echo Снова расчет p: varX=$varX varY=$varY

вызывает командные файлы "p1" и "p2", имеющие вид:
     # расчет p1
     echo Расчет p1
     echo varX=$varX varY=$varY
     varX=a varY=b
     echo varX=$varX varY=$varY
     export varX
 
     # расчет p2
     echo Расчет p2
     echo varX=$varX varY=$varY
     varX=A varY=B
     echo varX=$varX varY=$varY
     export varY

На экран будут выданы следующая информация:
     Расчет p
     varX=0 varY=1
     Расчет p1
     varX= varY=1
     varX=a varY=b
     Расчет p2
     varX= varY=1
     varX=A varY=B
     Снова расчет p: varX=0 varY=1

Из примера видно, что значения переменных экспортируются только в вызываемые расчеты (и не передаются "вверх" и "вбок").
Экспортировать переменные можно и командой "set" с флагом "-a".

НА ВСЯКИЙ СЛУЧАЙ заметим, что на передачу значений переменных никакого влияния не оказывает "физическое" взаимное расположение (файлов) расчетов в файловой системе.