Changing PATH Environment Variable for all Users. (Ubuntu)

I recently compiled Ruby Enterprise Edition (REE) on an Ubuntu 8.04 server.

I would like to update my PATH to ensure this new version of Ruby (found in /opt/ruby_ee/bin) supersedes the older version in /usr/local/bin. (I still want the old version around, though.)

I would like these PATH changes to affect all users and crontabs.

Attempted Solution #1:

The REE documentation recommends placing the REE bin folder at the beginning of the global PATH in /etc/environment. I altered the PATH in this file to read:

PATH="/opt/ruby_ee/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

This did not affect my PATH at all.

Attempted Solution #2:

Next I followed these instructions and updated the PATH setting in /etc/login.defs and /etc/crontab. (I did not change /etc/sudoers.)

This didn't affect my PATH either, even after logging out and rebooting the server.

Other information:

  • I seem to be having the same problem described here.
  • I'm testing using the commands "echo $PATH" and "ruby -v".
  • My shell is bash. My .bashrc doesn't override my PATH.
  • Yes, I have heard of the Ruby Version Manager project. ;)

Have you tried altering the default bashrc? This should be located in either /etc/bashrc or /etc/bash.bashrc (I think it's the second one in Ubuntu). Then in your home directory, make sure your .bash_profile includes:

if [ -f /etc/bash.bashrc ]; then
    . /etc/bash.bashrc
fi

This will make sure that the variables defined system-wide are read into the user's shell. This if-statement should be included by default in the .bash_profile created when you adduser (I know it is in RHEL).


Just to be clear, /etc/environment isn't loaded until you open a new shell / log in again.
Did you log-off and on?