linux shell-builtin

export

Объявить переменную окружения — сделать её доступной дочерним процессам

Описание

Встроенная команда оболочки export помечает переменную как переменную окружения. Это означает, что переменная будет унаследована всеми дочерними процессами — программами, скриптами, командами, запущенными из этой сессии.

Без export переменная существует только в текущей оболочке и не передаётся дочерним процессам. С export — копия переменной попадает в окружение каждого запускаемого процесса.

Переменные принято называть БОЛЬШИМИ БУКВАМИ — это соглашение, не обязательное требование. Системные переменные окружения (PATH, HOME, LANG) всегда в верхнем регистре.

Синтаксис

# Объявить и сразу экспортировать export MY_VAR=hello # Экспортировать уже объявленную переменную MY_VAR=hello export MY_VAR # Добавить каталог в PATH export PATH=/opt/mybin:$PATH # Объявить несколько переменных за раз export MY_VAR=hello VAR2=world

Флаги и опции

ФлагОписаниеПример
-p Вывести список всех экспортированных переменных в текущей сессии (в формате declare -x) export -p
-n Снять признак экспорта с переменной — она останется в оболочке, но перестанет передаваться дочерним процессам export -n MY_VAR
-f Экспортировать функцию оболочки (а не переменную) — передать функцию дочерним bash-процессам export -f my_function

Паттерны использования

Объявить и прочитать переменную

# Источник: Linux_LfS6.txt (урок 10)
export MY_VAR=hello
export var=world
echo $MY_VAR $var
# hello world

# ВСЕГДА используйте $ для чтения значения
# echo MY_VAR  -> выведет текст "MY_VAR", не значение!

Добавить каталог в PATH

# Добавить /opt/mybin в начало PATH
export PATH=/opt/mybin:$PATH

# Проверить результат
echo $PATH
# /opt/mybin:/usr/local/bin:/usr/bin:/bin

# Теперь программы из /opt/mybin доступны по имени
myprogram  # найдётся в /opt/mybin/

Локальная vs экспортированная переменная

# Локальная — только в текущей оболочке
local_var=local_value
bash -c 'echo $local_var'   # пусто — дочерний bash не видит

# Экспортированная — передаётся дочерним процессам
export global_var=global_value
bash -c 'echo $global_var'  # global_value

Постоянная переменная через ~/.bashrc

# Добавить в ~/.bashrc для постоянного сохранения:
# ~/.bashrc
export MY_PROJECT=/home/user/project
export PATH=$MY_PROJECT/bin:$PATH

# Применить изменения без перезапуска:
source ~/.bashrc
# или
. ~/.bashrc

Советы и предупреждения

Частая ошибка: echo PATH вместо echo $PATH
Без знака $ команда echo PATH выведет текст «PATH», а не значение переменной. Чтобы прочитать значение, всегда используйте $: echo $PATH, echo $MY_VAR. Эта ошибка встречается постоянно и хорошо видна в выводе env | grep PATH.
Совет: постоянное добавление через ~/.bashrc
Переменные, заданные через export в терминале, живут только до конца сессии. Чтобы переменная сохранялась между перезапусками, добавьте строку export MY_VAR=value в файл ~/.bashrc (для интерактивных сессий) или ~/.bash_profile (для login-сессий). После изменения файла выполните source ~/.bashrc.
Совет: export без пробелов вокруг =
В bash присвоение переменной НЕ терпит пробелов вокруг знака равенства: export MY_VAR=hello — правильно; export MY_VAR = hello — ошибка синтаксиса. Это обязательное правило для всех присвоений переменных в bash.