Por que eu adiciono um caminho para ~ / .bash_profile e o nomeio, mas não há efeito?

0

No meu install.sh :

# other commands to install java...
echo 'export JAVA_HOME="/usr/java/latest"' >> ~/.bash_profile
source ~/.bash_profile

Depois que esse script é executado, eu digito echo $JAVA_HOME , mas nada é exibido, mas quando executo o comando source do shell atual, JAVA_HOME é exibido quando faço eco dele novamente.

Por que meu script não está funcionando e como posso corrigir isso?

Eu sou ssh para um novo CentOS 7 e corro o script acima.

    
por user385300 30.10.2014 / 16:40

2 respostas

1

install.sh é executado em um subshell com seu próprio ambiente. Neste ambiente, você define JAVA_HOME com sucesso.

Se install.sh com sua subshell estiver terminada, seu ambiente também desaparecerá. Um subshell não pode definir uma variável em seu processo de chamada.

Se você iniciar install.sh com source install.sh , ele não será executado em uma subshell e você poderá definir JAVA_HOME. Mas não sei se as outras linhas de código em install.sh estão preparadas para serem executadas via source .

    
por 30.10.2014 / 18:42
0

JAVA_HOME é uma variável de ambiente, no entanto, se você deixar o script no qual você acessa .bash_profile , seu valor desaparecerá.

o bom novo, é que da próxima vez que você registrar, o valor deve ser definido.

    
por 30.10.2014 / 16:49