/etc/profile
é o mais comum
Estou pegando algo estranho no meu ambiente.
Eu tenho um .bash_profile
que apenas verifica .bashrc
e depois o cria. Eu tenho um JAVA_HOME
nesse arquivo que está definindo corretamente a variável e exportando-o. No entanto, se eu comentar a linha JAVA_HOME
em .bashrc
, outro JAVA_HOME
ainda estará aparecendo no meu ambiente, diferente do que eu estava definindo em .bashrc
. De onde vem esse outro JAVA_HOME
?
Além disso, parece que qualquer shell que eu executo - csh, sh, bash, etc ... - está puxando um JAVA_HOME
de algum lugar. Eu não sei o que poderia estar fazendo isso puxar para csh, sh, bash, etc ...
O Bash segue as convenções do Posix e, na primeira inicialização, configura o contexto do shell, fornecendo o arquivo / etc / profile. Em sistemas RedHat, o arquivo / etc / profile contém código para procurar em /etc/profile.d por arquivos terminados em '.sh'. Em seguida, ele cria um por um, adicionando as variáveis definidas no seu ambiente.
Da mesma forma, os shells csh / tcsh executam o /etc/csh.login que procura no mesmo diretório /etc/profile.d por arquivos terminados em '.csh' e faz o mesmo fornecimento deles.
Tente executar:
$ fgrep JAVA_HOME /etc/profile.d / *. sh
e você provavelmente encontrará o culpado. Você pode sudo-editar esse arquivo e definir o valor adequado lá, embora isso seja uma mudança global para todos que fizerem login no sistema, portanto, considere cuidadosamente antes de fazer isso.
O propósito desses arquivos é permitir que pacotes separados adicionem configurações de ambiente ao ambiente do usuário sem precisar editar o arquivo global / etc / profile. Pacotes geralmente colocam arquivos lá em pares de .sh e .csh com conteúdo funcional normalmente idêntico.