"which java" in CentOS prints wrong java path

sunskin picture sunskin · Oct 19, 2013 · Viewed 22.5k times · Source

I am not sure why "which java" and "whereis java" paths are not correct. I tried to edit ~/.bash_profile and /etc/environment but did not help. The desired path is what is seen in "echo $JAVA_HOME" below but the same is not reflected in "which java"

Below is what I get in CentOS 6.4:

which java

/usr/bin/java


java -version

java version "1.7.0_45"

JAVA(TM) SE Runtime Environment (build 1.7.0_45-b18)

JAVA HotSpot (TM) 64-bit Server VM (build 24.45-b08, mixed mode)


whereis java

java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java


echo $JAVA_HOME

/usr/java/jdk1.7.0_45/jre => desired shows correct when echo $JAVA_HOME


Answer

Peter Lawrey picture Peter Lawrey · Oct 19, 2013

Your PATH (and nothing else) determines which directories to look for commands. This is the same in Linux, Solaris, and DOS.

When you do a which {command} it find the first directory you can execute the command in.

When you update your PATH in .bashrc, you have to source it again to change your current settings.