Если вы не экспортируете, то переменная окружения будет видна только локально. Экспорт делает их доступными для других программ и оболочек, которые вы можете запустить (из этой оболочки).
«Экспорт» переменной в оболочке делает ее доступной для всех подоболочек и процессов, созданных этой оболочкой.
Он не делает его доступным везде в системе, только процессами, созданными из этой оболочки.
Вот пример, который вы можете попробовать доказать.
(«set» перечислит все переменные, установленные в терминале)
$ ZZZ=test
$ bash # this runs bash in bash, you can also type 'xterm' to see it work there too.
$ set |grep ZZZ # You will not see ZZZ=test
$ exit # Lets get out of the subshell and try export!
$ export ZZZ
$ bash
$ set |grep ZZZ # and there we go! our variable is set in the subshell/process.
Вы можете открыть другой терминал и увидеть, что это , а не установить там, однако.