Вновь создаваемые переменные локальны, т.е. эффективны только в пределах текущего экземпляра. Для распространения действия значений этих shell-переменных на процессы-потомки они должны быть отмечены как внешние с помощью команды export, которая является встроенной командой shell'a.
Например,
$ export u
Переменная u помечается как внешняя и существует вплоть до окончания работы shell’a.
Например,
$ echo $u
UNIX
$ ksh
$ echo $u
UNIX
$ u=AIX
$ echo $u
AIX
$ (Ctrl–D) (Возвращение в родительский
командный процессор)
$ echo $u
UNIX
На основании этого примера можно сделать два вывода:
- во–первых, чтобы подпроцессор узнал о существовании переменной, нужно экспортировать ее имя;
- во–вторых, даже когда имя экспортируется, любые присваивания, сделанные в подпроцессоре, остаются локальными для дочернего процесса.
Правило, согласно которому командные подпроцессоры не могут изменять значения переменных, установленных в родительском командном процессоре, имеет фундаментальное значение. Оно напоминает концепцию локальных и глобальных переменных, которую можно встретить в большинстве языков программирования.
Команда export без аргументов сообщает все ранее установленные переменные.