BASH: нужен ли «экспорт» при установке переменной в .bashrc?

#bash #variables #export

#bash #переменные #экспорт

Вопрос:

Интересно, есть ли необходимость использовать «экспорт» при установке переменной в .bashrc.

В моих тестах редактирования .bashrc не было разницы между

 foo=bar
  

и

 export foo=bar
  

В обоих случаях после входа в систему «echo $foo» выводит «bar».

Я использую Debian Squeeze, если это имеет значение.

Заранее благодарю вас, ребята.

Ответ №1:

Попробуйте создать сценарий оболочки, который обращается к foo переменной.

Если foo было export ‘отредактировано, это будет видно в сценарии оболочки, в противном случае это не будет.

Комментарии:

1. Я создал тестовый скрипт, содержащий » echo $foo «. В обоих случаях при запуске скрипта после входа в систему выводом было «bar». Я сумасшедший? Кто-нибудь может воспроизвести это?

2. Как вы запускаете скрипт? ./script или . script ?

3. Я запускаю скрипт через ./script

4. Извините, ребята. Я не знаю, что пошло не так. Но теперь все работает так, как ожидалось. Большое вам спасибо за все ваши ответы!

Ответ №2:

Суперпользователь предусмотрел это.

Краткий ответ: export проверяет, установлена ли переменная среды в дочерних процессах. Если вы не экспортируете, это доступно только в том же процессе / интерактивном сеансе.

Комментарии:

1. Я создал тестовый скрипт, содержащий » echo $foo «. В обоих случаях при запуске скрипта после входа в систему выводом было «bar». Я сумасшедший? Кто-нибудь может воспроизвести это?

Ответ №3:

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