При настройке переменной в .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
отобразит "с экспортом"