3

I have Oracle jdk7 installed on my centos6. I noticed that the /etc/profile has the lines below:

#below lines are added for Java
export JAVA_HOME="/usr/java/latest"
## export JAVA_HOME JDK ##
export JAVA_HOME="/usr/java/jdk1.7.0_75"

In order to test my assumptions on env variables and PATHs, I commented all the lines above (the export lines). I tried to load the new /etc/profile by sourcing it . /etc/profile and issued the echo $JAVA_HOME; it still returned the above path.

So, I rebooted the machine as the source didn't work. After the reboot, the echo $JAVA_HOME returns nothing, which is expected. There is nothing in ~/.bash_profile for Java.

But if I issue the command: java -version on the shell, it still returns

[root@localhost ~]# java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

Where is the Java defined in the PATH? the path in the ~/.bash_profile is as below, it doesn't have any for Java.

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
export PATH
~
~
~

set - on the shell returns the line below for the PATH variable:

PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  • java is probably a script, you can find out by which java, then file /usr/wahterver/java. I'll bet for either /usr/bin or /usr/local/bin which must be in you $PATH. – Archemar Mar 29 '15 at 21:24
  • @Archemar : indeed, it was there in /usr/bin/java ... when i installed the oracle jdk, it was installed in /usr/java/.. then i followed some instructions to set the desired oracle jdk instead of the open jdk. i am going to revisit the proceedure that might have set the /usr/java to /usr/bin/java.. Thanks!!! – OK999 Mar 29 '15 at 21:44
  • I don't think you need to change the PATH. If you can run java -version it means that java is already in the PATH. All you have to do is set the variable JAVA_HOME. – Ernest A Mar 29 '15 at 21:51
2

The default PATH is set in /etc/profile. Users can modify their PATH by editing ~/.profile, ~/.bash_profile or ~/.bashrc (if they're running bash) but if they don't they will still have a PATH as defined in /etc/profile. That's why the line was

PATH=$PATH:$HOME/bin

and not just

PATH=$HOME/bin

That way, the original value of PATH is kept and the new directory is simply appended. On my system, the PATH set in /etc/profile is

PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

You probably have a very similar line in yours and that's where /usr/bin comes from.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.