Ao configurar uma variável em .bashrc
, devo usar isso?
export VAR=value
Ou isso seria o suficiente?
VAR=value
Qual é exatamente a diferença (se houver)?
export VAR=value
Fazendo
VAR=value
apenas define a variável para a duração do script (.bashrc
nesse caso). Os processos filho (se houver) do script não terão VAR definido e, uma vez que o script sai, VAR
desaparece.
export VAR=value
adiciona explicitamente VAR
à lista de variáveis que são passadas para processos filhos. Quer experimentar? Abra um Shell, faça
PS1="foo > "
bash --norc
O novo Shell obtém o Prompt padrão. Se ao invés você fizer algo como
export PS1="foo > "
bash --norc
o novo Shell obtém o Prompt que você acabou de definir.
Atualizar : conforme Ian Kelling observa abaixo das variáveis definidas em .bashrc
persistem no Shell que originou .bashrc
. Mais geralmente, sempre que o Shell origina um script (usando o source scriptname
comando) variáveis definidas no script persistem por toda a vida do Shell.
Ambos parecem funcionar bem, mas o uso da exportação garantirá que a variável esteja disponível para subshells e outros programas. Para testar isso, tente isso.
Adicione essas duas linhas ao seu arquivo .bashrc
TESTVAR="no export"
export MYTESTVAR="with export"
Em seguida, abra um novo Shell.
Corrida echo $TESTVAR
e echo $MYTESTVAR
mostrará o conteúdo de cada variável. Agora, dentro do mesmo Shell, remova essas duas linhas de seu arquivo .bashrc e execute bash
para iniciar um subshell.
Corrida echo $TESTVAR
terá uma saída vazia, mas executando echo $MYTESTVAR
exibirá "com exportação"