Como exportar variáveis de um arquivo?

43

Eu tenho um arquivo tmp.txt contendo variáveis a serem exportadas, por exemplo:

a=123
b="hello world"
c="one more variable"

Como posso exportar todas essas variáveis usando o comando export , para que elas possam ser usadas posteriormente por processos filhos?

    
por Neerav 11.06.2013 / 22:17

2 respostas

48
source tmp.txt
export a b c
./child ...

A julgar pela sua outra pergunta, você não quer codificar os nomes das variáveis:

source tmp.txt
export $(cut -d= -f1 tmp.txt)

teste:

$ source tmp.txt
$ echo "$a $b $c"
123 hello world one more variable
$ perl -E 'say "@ENV{qw(a b c)}"'

$ export $(cut -d= -f1 tmp.txt)
$ perl -E 'say "@ENV{qw(a b c)}"'
123 hello world one more variable
    
por 11.06.2013 / 22:21
116
set -a
. ./tmp.txt
set +a

set -a faz com que as variáveis definidas a partir de agora sejam automaticamente exportadas. Está disponível em qualquer shell tipo Bourne. . é o padrão e o nome Bourne para o comando source , então eu prefiro isso para portabilidade ( source vem de csh e agora está disponível na maioria dos shells similares a Bourne incluindo bash (às vezes com um comportamento ligeiramente diferente)).

Em shells POSIX, você também pode usar set -o allexport como uma forma alternativa mais descritiva de escrevê-lo ( set +o allexport para desfeito).

¹ Em bash , esteja ciente de que, enquanto allexport estiver ativado, todas as funções que foram declaradas (que também são variáveis) também serão exportadas para o ambiente ( como BASH_FUNC_myfunction%% de variáveis de ambiente que são importadas por todos os bash shells executados nesse ambiente, mesmo quando executados como sh ).

    
por 11.06.2013 / 23:13

Tags