Por que meu script não pode exportar variáveis?

4

Estou usando o MSYS e tenho um arquivo vars.txt com variáveis, chaves de valores como:

WINDIR C:/WINDOWS
STS_BUILD_DIRECTORY D:/STS/TMP
ALLUSERSPROFILE C:/Documents and Settings/All Users

Eu quero ler isso e definir variáveis de ambiente. Eu tenho um script bash setenv:

while read var value;
do
  echo "performing export $var=$value"
  export $var='$value'
done 

e eu chamo isso com

cat vars.txt | source setenv

No entanto, no meu ambiente, as variáveis não estão definidas. Eu também tentei fazer isso em uma função, mas sem alegria. Alguém aqui sabe o que eu estou fazendo errado? Obrigado.

    
por danio 17.09.2010 / 18:29

1 resposta

7

O pipe configura um subshell. Quando o subshell sai, as variáveis são perdidas.

Tente isto:

source setenv < vars.txt

Além disso, suas aspas simples podem impedir a expansão da variável (não sei se isso é verdadeiro em MSYS). Tente alterar a linha export para isso:

export $var="$value"

Você pode usar declare em vez de export se as variáveis não precisarem ser exportadas.

    
por 17.09.2010 / 18:39