Variáveis de ambiente do / etc / environment não propagadas para o processo filho?

3

Estou com um problema. Eu configurei uma variável de ambiente em /etc/environment usando BOOST_LIBRARYDIR="/usr/local/lib/boost/release" .

echo $BOOST_LIBRARYDIR corretamente ecoa o valor para o terminal. No entanto, se eu executar echo $BOOST_LIBRARYDIR em um script usando ./test.sh , ele mostrará a variável env como vazia. Pelo que entendi, deve ser definido também para processos filho?

    
por Max 18.04.2011 / 20:55

2 respostas

4

Se você quiser que uma variável de ambiente seja passada para filhos, você deve exportá-la. Para verificar se ele é exportado, use o comando env . A maneira mais segura de fazer isso é a seguinte.

BOOST_LIBRARYDIR="/usr/local/lib/boost/release"; export BOOST_LIBRARYDIR

Novos shells como bash e ksh aceitam a forma mais simples.

export BOOST_LIBRARYDIR ="/usr/local/lib/boost/release"
    
por BillThor 18.04.2011 / 21:22
2

Como /etc/environment parece ser proveniente de /etc/init/gdm.conf , acho que você pode substituir sua linha por

export BOOST_LIBRARYDIR="/usr/local/lib/boost/release"
    
por enzotib 18.04.2011 / 21:10