Java classpath – Linux


I am trying to understand how classpath really works. After searching around the web this is where I have reached so far:

I have added

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

at /etc/environment. I am running Ubuntu by the way.

Java finds the path and compiles without problem.

The problem is that if I change the CLASSPATH and then I do: source /etc/environment, the new CLASSPATH is not applied. It is applied if and only if I restart the system. For example if I delete the

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

line, then I do source /etc/environment and I finally do echo $CLASSPATH, what I get is /home/foo:/home/foo/Java_code/my_code. I think I should get an empty line, shouldn't I?

Is there a way to apply the changes in PATH or CLASSPATH variables immediately without having to restart the system?

It might help you know that the /etc/environment file originally contained only the following line:


Thank you for your time.

Best Solution

I think you should not put any paths that a local to your home directory in a system wide file. I would leave /etc/environment well alone, unless you provide some changes, that are necessary or beneficial to all users. Put any changes to the CLASSPATH in your .bashrc in your home directory.

  export CLASSPATH

This way you can source it and any newly started bash will have the settings right at once.