Назад | Перейти на главную страницу

Как лучше всего установить переменную среды в .bashrc?

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

export VAR=value

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

VAR=value

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

Лучший путь

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 command) переменные, заданные в сценарии, сохраняются в течение всего срока службы оболочки.

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

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

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

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

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

Бег echo $TESTVAR будет пустой вывод, но работает echo $MYTESTVAR отобразит "с экспортом"