Экспортируемые переменные передаются новым вызванным процессам.
Попробуйте установить A=1
, затем вызвать новую оболочку, введя "bash", затем echo $A
- пустая строка.
Сделайте то же самое, но затем export A=1
, вызовите новую оболочку, затем echo $A
- вуаля!
отредактируйте с технической стороны и, глядя на ваш вопрос, B = 1на самом деле не устанавливает переменную среды.Чтобы получить real окружение вашей оболочки (в linux), попробуйте
$ xargs -n 1 -0 echo < /proc/$$/environ
, который отличается от вывода export
.И как примечание, этот вопрос касается внутренних компонентов bash и обработки его окружения.