I have installed python 2.7.3 on CentOS 6 with thse instructions
http://villaroad.com/2010/10/rolling-python-2-6-2-on-centos-5-3/
I have added aliases to bash_profile of both root and myuser for new python. Now when I write python to shell, it runs python2.7.3 correctly from both users.
However, if I write sudo python it stills runs old version python2.6.6
What could be the problem?
sudo
doesn't use your shell to run commands, it just exec
s the command directly. This means (a) there's nothing that sources root's bash_profile
, so it doesn't matter what you put there, and (b) shell aliases wouldn't matter even if they were set.
So, if you want to use alias
es to specify a different python than the one that's on your PATH, you can't use sudo python
to run that same one.
The easiest, and probably safest, fix is to be explicit: run sudo /path/to/other/python
. If you need to do this often enough, you can always create an alias for that.
If you really want to, you can make sudo
use a shell. Either explicitly generate the bash
command line that runs python
, or (more simply) just use the -s
or -i
flags. (In this case, if you're trying to get root's ~/.bash_profile
run, -s
won't do it, but -i
will.) But sudo
ing shells is not as safe as sudo
ing programs. Your sudoers
may even be explicitly configured to prevent you from doing it. (You can fix that with visudo
if you want, but opening a security hole without understanding exactly what you're opening is generally considered a bad thing to do.)