Environment Variable Mantém a sua forma original no Linux (Fedora)

1

Eu tenho uma variável JAVA_HOME, fazendo > echo $JAVA_HOME"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?

    
por ThaSaleni 04.04.2013 / 15:07

2 respostas

5

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.

    
por 04.04.2013 / 15:08
3

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.

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.

link

    
por 04.04.2013 / 15:23

Tags