Alterando variáveis de ambiente

3

Acabei de alterar meu arquivo /etc/environment para:

M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1
M2=$M2_HOME/bin
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH=$M2:$PATH
JAVA_HOME=/usr/local/jdk1.6.0_45
PATH=$JAVA_HOME:$PATH

(tentando fazer algo semelhante a isso )

No entanto, quando tentei verificar as variáveis de ambiente digitando, por exemplo echo "$M2" , o resultado é uma linha vazia para todas as variáveis e $ PATH é o mesmo que antes de editar o arquivo. Por que minhas mudanças não funcionaram? Eu tentei fechar e abrir o shell, mas nada acontece.

    
por teaLeef 30.08.2014 / 01:44

2 respostas

3

/etc/environment faz um login correto para entrar em vigor, porque é processado pelo PAM no login. Além disso, como @przemo observou, ele não é executado ou originado como um script, portanto, as variáveis não são expandidas. Coloque essas variáveis em um arquivo .sh em /etc/profile.d/ :

sudo tee -a /etc/profile.d/my_vars.sh <<"EOF"
export M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export JAVA_HOME=/usr/local/jdk1.6.0_45
export PATH=$JAVA_HOME:$PATH
EOF

Isso também fará um novo login para ter efeito, mas você pode testá-lo imediatamente executando um shell de login:

$ bash -l
$ echo $PATH
/usr/local/jdk1.6.0_45:/usr/local/apache-maven/apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Como Gunnar apontou, a atribuição padrão para PATH deve permanecer em /etc/environment e não deve ser adicionada ao script acima. Veja esta página wiki da comunidade para mais informações .

    
por muru 30.08.2014 / 03:56
2

/etc/environment não é um arquivo de script, você não pode usar variáveis. Para ler mais, recomendo link

    
por przemo 30.08.2014 / 03:00