На самом деле существует два типа переменных:
Чтобы усложнить задачу, они оба выглядят одинаково , а переменную оболочки можно преобразовать в переменную среды с помощью команды export
.
Команда env
покажет текущий набор переменных среды.
$ myvar=100
$ env | grep myvar
$ export myvar
$ env | grep myvar
myvar=100
Переменные также можно временно экспортировать на время действия команды.
$ env | grep anothervar
$ anothervar=100 env | grep anothervar
anothervar=100
$ env | grep anothervar
$
Когда оболочка запускается, она наследует ряд переменных среды (которые могут быть нулевыми).
Сценарии запуска (например, .bash_profile
, .bashrc
, файлы в каталоге / etc
) также могут устанавливать и экспортировать переменные.
Наконец, оболочка сама может установить значение по умолчанию для переменных среды, если среда пуста. например
$ PATH=foo /bin/bash -c 'echo $PATH'
foo
$ PATH= /bin/bash -c 'echo $PATH'
$ unset PATH
$ /bin/bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.