Каков наилучший способ установить переменную окружения в .bashrc?

11

При настройке переменной в .bashrcя должен использовать это?

export VAR=value

Или этого будет достаточно?

VAR=value

В чем именно разница (если она есть)?

Flávio Amieiro
источник

Ответы:

16

Лучший способ

export VAR=value

Разница

дела

VAR=value

устанавливает переменную только на время действия скрипта ( .bashrcв этом случае). Дочерние процессы (если таковые имеются) сценария не будут определены VAR, и как только сценарий завершится, завершится VAR.

export VAR=value

явно добавляет VARв список переменных, которые передаются дочерним процессам. Хочешь попробовать? Откройте оболочку, сделайте

PS1="foo > "
bash --norc

Новая оболочка получает приглашение по умолчанию. Если вместо этого вы делаете что-то вроде

export PS1="foo > "
bash --norc

новая оболочка получает приглашение, которое вы только что установили.

Обновление: как отмечает Ян Келлинг ниже переменных, установленных в .bashrcперсистенте в оболочке, которая была получена .bashrc. В более общем случае всякий раз, когда оболочка создает сценарий (используя source scriptnameкоманду), переменные, заданные в сценарии, сохраняются в течение всего срока службы оболочки.

agnul
источник
1
msgstr "только устанавливает переменную на время действия скрипта (в данном случае .bashrc)" Это неверно / вводит в заблуждение. Переменные, установленные таким образом, сохраняются в интерактивной оболочке, которая читает .bashrc.
Ян Келлинг
PS1плохой пример переменной, которая будет экспортирована как переменная окружения. Это имеет смысл только для дочерних процессов, которые являются оболочками, и интерпретируется по-разному различными оболочками (например, bash и dash). Лучше всего просто установить его как обычную переменную оболочки в .bashrc. Лучшие примеры переменных среды включают в себя HOME, PATH, EDITORи т.д.
Энтони Geoghegan
10

Кажется, что оба прекрасно работают, но использование экспорта обеспечит доступность переменной для подоболочек и других программ. Чтобы проверить это, попробуйте это.

Добавьте эти две строки в ваш файл .bashrc

TESTVAR="no export"
export MYTESTVAR="with export"

Затем откройте новую оболочку.

Запуск echo $TESTVARи echo $MYTESTVARпокажет содержимое каждой переменной. Теперь внутри этой же оболочки удалите эти две строки из файла .bashrc и запустите, bashчтобы запустить подоболочку.

Запуск echo $TESTVARбудет иметь пустой вывод, но запуск echo $MYTESTVARбудет отображать «с экспортом»

Майк Х
источник