JAVA_HOME: .bashrc ou .profile

1

Eu preciso definir algumas variáveis como JAVA_HOME e adicioná-las ao PATH . Posso de alguma forma defini-los em .profile e tê-los puxados para .bashrc ? Ou talvez adicioná-los a um terceiro arquivo e ter esse arquivo referenciado em .bashrc e .profile ?

    
por EdgeCase 23.05.2013 / 15:59

3 respostas

2

De man bash :

  

Quando o bash é invocado como um shell de login interativo, ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo / etc / profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura por ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nessa ordem, e lê e executa os comandos do primeiro que existe e é legível. A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.

e

  

O Bash tenta determinar quando está sendo executado com sua entrada padrão conectada a uma conexão de rede, como quando executado pelo daemon de shell remoto, geralmente rshd, ou pelo daemon de shell seguro sshd. Se o bash determinar que está sendo executado dessa maneira, ele lê e executa comandos de ~ / .bashrc e ~ / .bashrc, se esses arquivos existirem e forem legíveis. Não fará isso se invocado como sh. A opção --norc pode ser usada para inibir esse comportamento, e a opção --rcfile pode ser usada para forçar a leitura de outro arquivo, mas o rshd geralmente não invoca o shell com essas opções ou permite que elas sejam especificadas.

Em outras palavras, ~/.profile e ~/.bashrc normalmente serão lidos quando você iniciar bash , então você pode colocá-lo em qualquer um dos dois.

Você também pode usar o source luke em qualquer arquivo para carregar o arquivo luke onde você definiria todas as variáveis Javan. Veja help . ou help source para detalhes.

    
por l0b0 23.05.2013 / 16:10
2

Primeiro, você nunca adicionará JAVA_HOME ao seu PATH. Eles servem diferentes propósitos como variáveis de ambiente. O primeiro, define onde seus binários java estão instalados, para que outros programas baseados em java possam saber. O segundo, é um conjunto de lugares onde o bash irá procurar os comandos que você digitar no terminal, como ls , cd etc.

Segundo, ambos os arquivos funcionarão, mas você deve ter cuidado ao configurar variáveis dentro do .bashrc, porque você pode sobrescrever aqueles que já estão configurados em outros arquivos, como o PATH. A maneira mais segura de fazer isso é adicionando ": $ PATH" no final do caminho. Seria algo assim (adiciona java binaries ao seu PATH para poder chamar comandos como javac ):

export PATH="/usr/java/jdk1.8.0_121/bin:$PATH"

Para definir JAVA_PATH, a maneira mais segura (e automática ... rsrs) de fazer isso é adicionando o seguinte código no final de .bashrc:

export JAVA_HOME=$(update-alternatives --query javac | sed -n -e 's/Best: *\(.*\)\/bin\/javac//p')

Depois de ter feito isso, você terá que executar exec bash ou fechar e reabrir a janela do terminal. Para verificar se suas variáveis estão definidas, execute no terminal:

echo $JAVA_HOME
echo $PATH

Você deve conseguir ver o valor dentro das variáveis.

ATUALIZAÇÃO: Lembre-se de que todos esses arquivos, como .bashrc, estão localizados em seu diretório pessoal. Algo como /home/<your name> ou apenas digitando cd sem nenhum outro argumento. Lembre-se também que os arquivos que começam com um 'ponto' . não são visíveis apenas digitando ls no terminal. Se você quiser ver esses arquivos, você deve ls -a

    
por Luan Gonçalves Barbosa 13.03.2017 / 19:14
0

Você pode fazer exatamente o que você mencionou. Quando você fizer o ssh remoto no terminal bash, o .bash_profile será originado e quando você criar um novo xterm, o .bashrc será originado. Seria melhor se você colocasse as informações da variável de ambiente em outro arquivo .profile e de ambas as fontes .bash_profile e .bashrc as > .profile

~ / .profile

    
por Peter Delaney 23.05.2013 / 16:11