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 ba
The problem is that your $PATH
is changing upon execution.
You can either use sudo -E
:
-E The -E (preserve environment) option will override the env_reset option in sudoers(5)). It is only available when either the matching command has the SETENV tag or the setenv option is set in sudoers(5).
... or you can specify the full path to your executable. sudo `which python`
.
(It looks like you used alias
per the docs. This method would handle that too.)
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.)
The bin directory is probably referencing the old version of Python
> ls -la /usr/bin/python
lrwxrwxrwx 1 root root 9 Dec 21 2013 /usr/bin/python -> python2.7
Redirect the default python version to the one you want.
I would suggest using sudo -i
when calling the script. Straight from man sudo:
-i [command]
The -i (simulate initial login) option runs the shell specified in the passwd(5) entry of the target user as a login shell. This means that login-specific resource files such as .profile or .login will be read by the shell. If a command is specified, it is passed to the shell for execution. Otherwise, an interactive shell is executed. sudo attempts to change to that user's home directory before running the shell. It also initializes the environment, leaving DISPLAY and TERM unchanged, setting HOME , MAIL , SHELL , USER , LOGNAME , and PATH , as well as the contents of /etc/environment on Linux and AIX systems. All other environment variables are removed.