Quando alguém precisa exportar uma variável? [duplicado]

3

Eons atrás, quando comecei a atribuir variáveis no bash, era algo como:

export EDITOR=nano
export PS1=something

... e os gostos. E o hábito de exportar ficou meio que comigo.

No entanto, agora que estou mais velho, e espero que seja um pouco mais sábio, sei que não é necessário, então a minha pergunta é: quando é necessário? Quando não é? Eu raramente faço atribuições de variáveis fora do simples .bashrc stuff, pois qualquer script que eu escrevo é feito em perl.

    
por Jarmund 19.04.2015 / 16:41

1 resposta

2

É difícil responder essa pergunta completa e precisamente, porque o ponto de fazer export é colocar um par nome / valor ( EDITOR=nano por exemplo) nas informações herdadas por um processo filho do shell de exportação. / p>

Em geral, você deseja exportar as coisas definidas em .bashrc : EDITOR é um ótimo exemplo, porque define sua preferência por editores de texto que os programadores, interfaces de banco de dados e muitos outros programas usam para decidir qual programa executar quando Um desses programas quer que você edite algum texto. Eu uso EDITOR=vi eu mesmo. Outros exemplos comuns de .bashrc são ORACLE_HOME , PATH , VISUAL , TERM e SHELL . Eu consegui aqueles fazendo man more , e lendo para a seção de MEIO AMBIENTE.

Agora que escrevi "em geral", devo observar que, além dos valores de ambiente EDITOR e VISUAL , muitos são variados e específicos de alguns subsistemas. Fazer qualquer coisa com o notório sistema de banco de dados Oracle requer muitos valores de ambiente extras, muitos deles por superstição. Como o ambiente do shell é um conjunto de pares nome / valor, o ambiente é usado por sistemas individuais de todos os tipos de maneiras diferentes. O servidor web Apache passa muitos valores para CGI-BIN programas no ambiente.

Meu conselho é exportar o menor número possível de variáveis. Não polua seu ambiente interativo, pois você nunca sabe quando algum programa decidirá usar o valor da sua variável de ambiente secreto. Escreva pequenos scripts de shell que fazem pouco mais do que definir variáveis de ambiente, em seguida, execute o programa que espera essas variáveis.

Se você tiver um grande número de variáveis de ambiente definidas para seu ambiente interativo, ficará surpreso se você tentar executar algo de cron - crond não definirá o ambiente corretamente e você não terá nenhuma ideia de porque.

    
por 19.04.2015 / 20:48

Tags