Para cambiar o modificar el JAVA_HOME al usuario root tras una instalación de otra versión de Java tenemos que seguir los siguientes pasos:
Comprobar versión actual de Java:
Una vez que hemos instalado una nueva versión de Java JDK y/o JRE en nuestra máquina Linux, por ejemplo jre1.8.0_101, chequeamos la versión que está utilizando el usuario root (por defecto será la que viene en el SO):
[root@rhel ~]# java -version java version "1.6.0_32" OpenJDK Runtime Environment (IcedTea6 1.13.4) (rhel-11.1.13.4.el6-x86_64) OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
Como vemos en el resultado anterior la versión de Java que detecta es la 1.6.0_32 y no la nueva que hemos instalado hace un momento jre1.8.0_101.
Editar fichero .bashrc:
Para solucionar esto y que el usuario root utilice por defecto Java 1.8 hay que modificar el fichero .bashrc dentro del home del usuario:
[root@rhel ~]# vi ~/.bashrc
Y añadir las siguientes líneas al final del fichero, suponiendo que la ruta donde hemos instalado el nuevo Java es /usr/local/pr/jre1.8.0_101:
# Ejemplo si hemos instalado Java en /usr/local/pr/jre1.8.0_101 JAVA_HOME="/usr/local/pr/jre1.8.0_101"; export JAVA_HOME export PATH=$JAVA_HOME/bin:$PATH
Aplicar los cambios:
Para aplicar los cambios tenemos varias opciones. Cargar el fichero .bash_profile:
[root@rhel ~]# source ~/.bash_profile
o
[root@rhel ~]# . ~/.bash_profile
O también podemos hacer un exit y luego un login con el usuario root para tener una nueva sesión.
[root@rhel ~]# exit logout login as: root root@rhel's password: [root@rhel ~]#
Ahora si volvemos a ejecutar el chequeo de versión ya nos detecta la versión que hemos instalado:
[root@rhel ~]# java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
NOTA: La diferencia entre modificar el fichero .bash_profile o el fichero .bashrc es que con el primero sólo aplican los cambios a usuarios que hagan login en la máquina y utilicen la shell bash y con el segundo aplica a los usuarios que ejecuten un programa bash.
Dentro de .bash_profile se carga todo el contenido de .bashrc si este existe.
Sin embargo si modificásemos el fichero /etc/profile o el /etc/bashrc afectaría a cualquier usuario del Sistema.