Ao configurar uma variável .bashrc
, devo usar isso?
export VAR=value
Ou isso seria suficiente?
VAR=value
Qual é exatamente a diferença (se houver)?
fonte
Ao configurar uma variável .bashrc
, devo usar isso?
export VAR=value
Ou isso seria suficiente?
VAR=value
Qual é exatamente a diferença (se houver)?
export VAR=value
Fazendo
VAR=value
define apenas a variável para a duração do script ( .bashrc
neste caso). Os processos filhos (se houver) do script não terão o VAR definido e, assim que o script sair, ele VAR
se foi.
export VAR=value
adiciona explicitamente VAR
à lista de variáveis que são passadas para processos filho. Quer experimentar? Abra um shell, faça
PS1="foo > "
bash --norc
O novo shell recebe o prompt padrão. Se você fizer algo como
export PS1="foo > "
bash --norc
o novo shell recebe o prompt que você acabou de definir.
Atualização: como Ian Kelling observa abaixo, as variáveis definidas em .bashrc
persistem no shell que originou .bashrc
. Geralmente, sempre que o shell origina um script (usando o source scriptname
comando), as variáveis definidas no script persistem por toda a vida útil do shell.
PS1
é um mau exemplo de uma variável a ser exportada como uma variável de ambiente. É significativo apenas para processos filhos que são shells e é interpretado de maneira diferente por shells diferentes (por exemplo, bash e dash). A melhor prática é simplesmente configurá-lo como uma variável comum do shell no.bashrc
. Melhores exemplos de variáveis de ambiente incluemHOME
,PATH
,EDITOR
, etc.Ambos parecem funcionar bem, mas o uso de 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
Em seguida, abra um novo shell.
Em execução
echo $TESTVAR
eecho $MYTESTVAR
mostrará o conteúdo de cada variável. Agora, dentro desse mesmo shell, remova essas duas linhas do arquivo .bashrc e executebash
para iniciar um subshell.A execução
echo $TESTVAR
terá uma saída vazia, mas a execuçãoecho $MYTESTVAR
exibirá "com exportação"fonte