readlink comando ti mostrerà il percorso completo del collegamento simbolico:
readlink -f `which java`
Il meglio che puoi fare è evitare del tutto java di Red Hat.
Ottieni il tuo java da Oracle e inseriscilo in /opt. Quindi crea semplicemente il collegamento simbolico /opt/java -> /opt/jdk-someversion e crea /etc/profile.d/java.sh contenente
#!/bin/sh
export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH
Quindi, per modificare java a livello di sistema, basta modificare il collegamento simbolico in opt. Per utilizzare più versioni java, utilizzare script come sopra con JAVA_HOME appropriato.
Inoltre, lo script /sbin/service utilizzato per eseguire gli script /etc/init.d strapperà le variabili di ambiente - esegue env -i in modo esplicito. Quindi, ad esempio, il tuo Tomcat non riceverà JAVA_HOME, dovrai creare setenv.sh in $CATALINA_BASE/bin.
Lo svantaggio di questo approccio è che non ricevi aggiornamenti java da Red Hat.
Innanzitutto, prova echo $JAVA_HOME dalla riga di comando. Dal java è già sulla tua strada, JAVA_HOME può essere impostato.
Qual è il modo migliore per capire la directory di installazione della mia installazione di java
Eseguendo il comando which java ti indirizzerà dove java è installato.
e poi imposta JAVA_HOME
Puoi modificare ~/.bashrc , ~/.bash_profile o /etc/profile per impostare JAVA_HOME . Impostandolo in ~/etc/profile lo imposterà a livello di sistema, e questo probabilmente non è quello che vuoi. Dì per esempio l'output di which java è /opt/jdk_1.7.0_25 , quindi devi solo aggiungere export JAVA_HOME=/opt/jdk_1.7.0_25 a ~/.bashrc o ~/.bash_profile e poi esegui source ~/.bashrc (o source ~/.bash_profile se lo imposti lì).
Nota che in questo caso, java è sul PATH ma in alcuni casi dovrai aggiungere export PATH=$PATH:$JAVA_HOME/bin per aggiungere il JAVA_HOME variabile a PATH .
RHEL utilizza un sottosistema alternativo per gestire le installazioni Java. Puoi avere più versioni di java installate, ma solo una alla volta è attiva.
Ciò significa che l'esecuzione di which java non fornisce informazioni utili. L'output sarà lo stesso indipendentemente dall'installazione java selezionata tramite le alternative. Esecuzione di readlink -f $(which java) (come già suggerito in altro commento) o utilizzando le alternative di richiesta alternatives --display java sarebbe meglio.
Guarda l'esempio dalla macchina RHEL 6 con OpenJDK installato (fornito con RHEL):
[example@unixlinux.online ~]# which java
/usr/bin/java
[example@unixlinux.online ~]# readlink -f $(which java)
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/jre/bin/java
[example@unixlinux.online ~]# alternatives --display java | head -2
java - status is manual.
link currently points to /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
Nota che la variabile d'ambiente JAVA_HOME non è definito da nessuna parte per impostazione predefinita, dovresti definirlo tu stesso in .bashrc dell'utente che lo richiede.
Nell'esempio precedente, correggere il valore di JAVA_HOME sarebbe/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64 .
Consulta i dettagli nella documentazione relativa all'installazione di OpenJDK, cerca la sezione "Facoltativo:imposta la variabile di ambiente JAVA_HOME".