Você precisa incluir esse export
no seu ~/.bashrc
ou ~/.bash_profile
, para que ele seja carregado toda vez que você iniciar uma nova sessão.
Eu tenho uma variável JAVA_HOME, fazendo > echo $JAVA_HOME
dá "old/path/to/my/jdk.1.7"
. Eu vou para o terminal e faço um export JAVA_HOME=new/path/to/my/jdk.1.8.0
que funciona bem para a duração da sessão de terminal, mas assim que eu inicio uma nova instância de guia / terminal e faço um > echo $JAVA_HOME
ele me dá: old/path/to/my/jdk.1.7
. O que eu poderia estar fazendo errado?
Você precisa incluir esse export
no seu ~/.bashrc
ou ~/.bash_profile
, para que ele seja carregado toda vez que você iniciar uma nova sessão.
Uma variável de ambiente definida em uma sessão de shell persiste apenas durante a duração dessa sessão. Para persistir a variável, você precisa defini-la sempre que uma sessão de shell for iniciada usando um script. Existem vários arquivos de script que existem para esse propósito e são executados automaticamente pelo bash sempre que ele é invocado. Infelizmente, isso não é tão simples quanto parece porque o bash pode ser invocado de maneiras diferentes e cada tipo de chamada executa scripts diferentes.
Para invocações de shell de login interativo (console, ssh, etc.), você pode definir a variável adicionando a seguinte linha a ~ / .bash_profile , ~ / .bash_login ou ~ / .profile . O Bash procurará esses arquivos em ordem e executará o primeiro que for legível.
Para invocações de shell interativas não-login (subshells, terminais de ambientes gráficos, etc.) use ~ / .bashrc . Note que algumas distros (Ubuntu) fonte ~ / .bashrc de ~ / .bash_profile para defini-lo aqui irá configurá-lo para logins interativos também.
export JAVA_HOME=new/path/to/my/jdk.1.8.0
Também invocações de shell não interativas (invólucros invocados para executar um script) herdam o ambiente pai, mas não executam nenhum script de inicialização.
Além disso, para algumas distros (Ubuntu, por exemplo), o arquivo recomendado para edição é ~ / .pam_environment , mas a sintaxe é um pouco diferente e requer uma expressão por linha.
JAVA_HOME DEFAULT=new/path/to/my/jdk.1.8.0
Se você quiser que as alterações sejam em todo o sistema, em vez de específicas do usuário, use /etc/bash.bashrc , / etc / profile e / etc / ambiente , respectivamente.
Para mais informações sobre a diferença entre esses arquivos, veja o seguinte link.
Também pode ser útil ler a seção INVOCATION do arquivo man do BASH, pois há tantos fatores circunstanciais que influenciam o script que é executado e quando.