Primeiro, um item de nota sobre $PATH . Você tem o JAVA_HOME definido no diretório jdk , mas para o PATH , é necessário fazer isso $JAVA_HOME/bin .
Em segundo lugar, se você precisar que essas variáveis estejam disponíveis para scripts não interativos, convém colocá-las em ~/.bashrc , pois ~/.bash_profile é lido apenas por logins interativos.
Na verdade, a ordem real na qual os perfis (shell de login) são lidos é:
-
/etc/profile
então:
-
~/.bash_profile(no CentOS, se-f ~/.bashrc, origens~/.bashrc) -
~/.bash_login -
~/.profile(no Ubuntu, se-n $BASH_VERSION, origens~/.bashrc)
EDIT: Se um desses arquivos for encontrado, outros arquivos não serão processados, a menos que sejam explicitamente fornecidos
Non-login shells (por padrão) só procuram por ~/.bashrc .
Então, dependendo de como você está executando bash , você pode nem estar lendo o perfil ao qual adicionou essas linhas. Você está executando sudo -u grid bash , ou su grid ou su - grid , ou iniciando uma nova sessão ssh cada vez que você testa? Algumas dessas opções podem não acionar um shell bash de login interativo.
Portanto, verifique cada um dos arquivos listados acima e veja se algum deles está desativado ou redefinindo a variável JAVA_HOME . Em seguida, tente adicionar as linhas ao final de ~/.profile , que é o último arquivo originado por um shell de login.
Para fins de depuração, você pode adicionar mensagens ao perfil para garantir que ele também esteja sendo definido corretamente.
~/.profile :
export JAVA_HOME=/home/grid/jdk
echo "DEBUG: .profile: JAVA_HOME is [$JAVA_HOME]"
export HADOOP_HOME=/home/grid/hadoop
echo "DEBUG: .profile: HADOOP_HOME is [$HADOOP_HOME]"
PATH=$HADOOP_HOME:$JAVA_HOME/bin:$PATH
echo "DEBUG: .profile: PATH is [$PATH]"
export PATH
Isso causará 3 linhas de saída quando você fizer login em um shell de login interativo, e os valores entre os colchetes facilitarão a visualização se os valores estão sendo definidos para começar. Se você vir que JAVA_HOME está sendo definido quando ~/.profile é originado, mas não é definido quando o shell se torna interativo, você sabe que precisa continuar seguindo o processo de login para determinar onde o valor está mudando.