- As definições de variáveis em uma janela de terminal não estão no escopo de outras janelas de terminal. Para definir uma variável em todas as janelas do terminal, você precisa adicioná-la a um arquivo de configuração do shell. Normalmente, isso será
~/.bashrc, sendo o Bash o shell padrão na maioria das distros. Você pode adicionar uma linha comoexport JAVA_HOME=/some/pathpara tornar a variávelJAVA_HOMEdisponível para todos os shells e scripts correr nessas conchas. (Ele só está disponível em shells abertos após salvar~/.bashrc; se você quiser que ele esteja disponível em um terminal já aberto, simplesmente executeexec "$SHELL"para reiniciar seu shell. -
which javaprocura um executável chamadojavanos caminhos separados por dois pontos contidos noPATHvariável, não importa qual seja o valor deJAVA_HOME. -
JAVA_HOMEé usado por aplicativos Java , não pelo shell ou pelo terminal. A Oracle descreve como:An environment variable used to trigger the 'java' found in your PATH to use a different JDK image. Unfortunately, not all 'java' startup scripts obey this env variable. It's also used by many java tool startup scripts to determine what 'java' to run, bypassing the 'java' found in the PATH setting. Setting this variable during a JDK build is a bad idea, don't do it.
- A dica sobre
javaestar disponível em vários pacotes significa que o diretório do executáveljava(provavelmente/usr/local/jdk1.8.0_20/binno seu caso) não está na variávelPATHe pode ser instalado a partir dos pacotes de distribuição listado. Você precisará adicionar o diretório à variávelPATHcomoexport PATH="$PATH"':/usr/local/jdk1.8.0_20/bin'em um arquivo de inicialização do shell, como acima.
Isso esclarece as coisas?