Как вы, возможно, уже знаете, UNIX позволяет процессам иметь набор переменных среды, которые представляют собой пары ключ / значение, причем ключ и значение являются строками.
Операционная система отвечает за хранение этих пар для каждого процесса отдельно.
Программа может обращаться к своим переменным окружения через этот UNIX API:
char *getenv(const char *name);
int setenv(const char *name, const char *value, int override);
int unsetenv(const char *name);
Процессы также наследуют переменные среды от родительских процессов. Операционная система отвечает за создание копии всех «envars» в момент создания дочернего процесса.
Bash , среди прочих оболочек, способен устанавливать переменные окружения по запросу пользователя. Вот для чего существует export
.
export
- команда Bash для установки переменной окружения для Bash. Все переменные, установленные с помощью этой команды, будут наследоваться всеми процессами, которые создаст этот Bash.
Подробнее о Среда в Bash
Другой тип переменной в Bash - это внутренняя переменная. Поскольку Bash - это не просто интерактивная оболочка, это фактически интерпретатор сценариев, как и любой другой интерпретатор (например, Python), он способен хранить собственный набор переменных. Следует отметить, что Bash (в отличие от Python) поддерживает только строковые переменные.
Обозначение для определения переменных Bash: name=value
. Эти переменные остаются внутри Bash и не имеют ничего общего с переменными среды, которые хранятся в операционной системе.
Подробнее о Параметры оболочки (включая переменные)
Также стоит отметить, что, согласно справочному руководству Bash:
Среда для любой простой команды или функции может быть улучшена
временно префикс его с присвоением параметров, как описано
в Параметры оболочки . Эти операторы присваивания влияют только на
окружение, видимое этой командой.
Подводя итог:
export
используется для установки переменной среды в операционной системе. Эта переменная будет доступна всем дочерним процессам, созданным текущим процессом Bash, когда-либо после этого.
- Обозначение переменной bash (name = value) используется для установки локальных переменных, доступных только текущему процессу bash
- Обозначение переменной Bash с префиксом другой команды создает переменную среды только для области действия этой команды.