Você precisa apenas exportde variáveis que devam ser "vistas" por outros programas iniciados no shell, enquanto as que são usadas apenas dentro do próprio shell não precisam ser exporteditadas.
Isto é o que a página de manual diz:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Isso pode ser demonstrado com o seguinte:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Explicação:
- Primeiro, configurei
${MYVAR}para ser uma variável do Shell com MYVAR="value". Usando echoeu posso ecoar o valor dele, porque o eco faz parte do shell.
- Então eu crio
echo.sh. Esse é um pequeno script que basicamente faz o mesmo, apenas ecoa ${MYVAR}, mas a diferença é que ele será executado em um processo diferente porque é um script separado.
- Ao chamá-
echo.shlo, não produz nada, porque o novo processo não herda${MYVAR}
- Depois exporto
${MYVAR}para o meu ambiente com a exportpalavra - chave
- Quando agora executo o mesmo
echo.shnovamente, ele ecoa o conteúdo ${MYVAR}porque o obtém do ambiente
Então, para responder sua pergunta:
Depende de onde uma variável será usada, se você precisa exportá-la ou não.