Você precisa apenas export
de 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 export
editadas.
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 echo
eu 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.sh
lo, não produz nada, porque o novo processo não herda${MYVAR}
- Depois exporto
${MYVAR}
para o meu ambiente com a export
palavra - chave
- Quando agora executo o mesmo
echo.sh
novamente, 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.