Onde as variáveis do shell são originadas no bash em RedHat?

0

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 ...

    
por Derek 22.03.2012 / 17:56

2 respostas

0

/etc/profile é o mais comum

    
por 28.03.2012 / 05:58
0

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.

    
por 28.06.2016 / 17:06