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

11

Ao configurar uma variável em .bashrc , devo usar isso?

export VAR=value

Ou isso seria suficiente?

VAR=value

Qual é exatamente a diferença (se houver)?

    
por Flávio Amieiro 30.04.2009 / 14:37

2 respostas

15

A melhor maneira

export VAR=value

A diferença

Fazendo

VAR=value

define apenas a variável para a duração do script ( .bashrc neste caso). Processos filhos (se houver) do script não terão o VAR definido e, assim que o script sair, VAR desaparecerá.

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 recebe o prompt padrão. Se você fizer algo como

export PS1="foo > "
bash --norc

o novo shell recebe o aviso que você acabou de definir.

Atualização: como Ian Kelling observa abaixo das variáveis definidas em .bashrc persist no shell que originou .bashrc . Mais geralmente, sempre que o shell origina um script (usando o comando source scriptname ), as variáveis definidas no script persistem durante a vida útil do shell.

    
por 30.04.2009 / 14:57
10

Ambos parecem funcionar bem, mas o uso da exportação garante que a variável esteja disponível para subshells e outros programas. Para testar isso, tente isso.

Adicione estas duas linhas ao seu arquivo .bashrc

TESTVAR="no export"
export MYTESTVAR="with export"

Em seguida, abra um novo shell.

A execução de echo $TESTVAR e echo $MYTESTVAR mostrará o conteúdo de cada variável. Agora, dentro desse mesmo shell, remova essas duas linhas do seu arquivo .bashrc e execute bash para iniciar uma subcamada.

A execução de echo $TESTVAR terá uma saída vazia, mas a execução de echo $MYTESTVAR exibirá "com exportação"

    
por 30.04.2009 / 14:55