Se você não exportar, a variável de ambiente só será visível localmente. A exportação os torna disponíveis para outros programas e shells que você pode lançar (a partir desse shell).
Eu nunca entendo o que "exportação" faz. Por exemplo, qual é a diferença entre esses dois?
PYTHONPATH=/home/myaccount/ & export PYTHONPATH
e PYTHONPATH=/home/myaccount/
Um com exportação e outro sem.
Se você não exportar, a variável de ambiente só será visível localmente. A exportação os torna disponíveis para outros programas e shells que você pode lançar (a partir desse shell).
"Exportando" uma variável no shell a torna disponível para todos os subshells e processos criados por esse shell.
Ele faz não disponibilizá-lo em todo lugar no sistema, somente por processos criados a partir desse shell.
Aqui está um exemplo que você pode tentar provar.
("set" listará todas as variáveis definidas no terminal)
$ 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.
Você pode abrir outro terminal e ver que ele não está definido lá, no entanto.