Possível duplicado:
diferença entre "a = b" e "exportar a = b" no bash
É difícil admitir, mas eu nunca entendi o que exatamente export
faz com uma variável de ambiente. Eu sei que, se eu não exportar uma variável, às vezes não a vejo em processos filhos, mas às vezes parece que posso. O que realmente está acontecendo quando digo
export foo=5
e quando não devo exportar uma variável?
bash
export
shell-script
Chas. Owens
fonte
fonte
export
instruções ao .bashrc / .bash_profile para criar variáveis globais persistentes semelhantes a$HOME
.Respostas:
De
man bash
:fonte
Variáveis exportadas são passadas para processos filho, variáveis não exportadas não.
fonte
PYTHONPATH
) e, em seguida, observando que embora você podeecho $PYTHONPATH
não ser reconhecido pelo Python ou festança roteiros atéexport
ele$BASHPID
) e, no entanto, você pode ler variáveis não exportadas no shell pai. Prova simples:x="y"; echo "$BASHPID: $x"; (echo "$BASHPID: $x")
Meu palpite é que este é um caso especial que ocorre quando o processo filho é um subcasca.Ao usar
export
, você está adicionando a variável à lista de variáveis de ambiente do shell na qual o comando export foi chamado e todas as variáveis de ambiente de um shell são passadas para os processos filhos, é por isso que você pode usá-lo.Quando você termina o shell, seu ambiente é destruído, é por isso que as variáveis de ambiente são declaradas e exportadas no login, no arquivo .bashrc, por exemplo
fonte