#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 эти переменные применяются только к самой командной строке, а не к процессам, запущенным из командной строки