it-swarm-pt.tech

Qual é a melhor maneira de definir uma variável de ambiente em .bashrc?

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)?

11
Flávio Amieiro

A melhor maneira

export VAR=value

A diferença

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.

16
agnul

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"

10
Mike H