2012-03-07 2 views
2

Моя проблема заключается в том, что когда я делаю:Как изменить путь python в состоянии sudo?

$, которые питон => я получаю/а/б/с/питон, как мой каталог

но если я $ Sudo какой питон => I get/d/e/python как результат

Как изменить sudo один, чтобы соответствовать нормальному случаю, это делает невозможным установку библиотек из источника.

ответ

0

Он использует первое из найденных в $ PATH

попробовать делать

echo $PATH

затем

sudo bash -c 'echo $PATH'

Держу пари, они отличаются.

В любом случае обычно существует скрипт rc для оболочки, которую вы используете как в/root, так и у вашего текущего пользователя, просто измените пути в переменной среды для той, которая вам нужна.

+0

Я получаю оба пути одинаковыми. – Kakashi

+3

@ Какаши: это потому, что str8 дал вам неправильную команду: 'sudo echo $ PATH' заменит путь до вызова' sudo', поэтому ничего не говорит вам. (S) он хотел написать что-то вроде 'sudo bash -c 'echo $ PATH'', который печатает путь, просматриваемый командой' sudo'. Если вы запустите это, вы увидите, что 'sudo' работает с путём, который включает'/usr/bin' перед '/ usr/local/bin', или (более вероятно) не включает'/usr/local/bin'. – ruakh

+1

'sudo echo $ PATH' расширит ваш путь и передаст его sudo для эха в качестве root! – alexis

0

Я бы сначала попробовать это:

sudo -i which python 

, который (косвенно) вызывает профиль в root пользователя для запуска, в том числе любого не по умолчанию конфигурации пути. (По умолчанию sudo не заморачиваться с этим.)

Если это не сработает, то, что говорит вам, что /usr/local/bin не в пути, созданного профилем root пользователя (или не раньше, чем /usr/bin), так что ваши варианты либо изменить root профиль пользователя и использовать выше, или же использовать:

sudo -E which python 

сохранить ваш путь (и остальную часть среды). Это может быть менее безопасным.

Для получения полной информации о каждом из этих вариантов см. the sudo man-page.

0

В соответствии с https://askubuntu.com/questions/477987/two-python-distributions-sudo-picking-the-wrong-one это результат secure_path (указанный в/etc/sudoers), переопределяющий ваш обычный PATH.

Я работал над этим, указав путь к пути к двоичному файлу, который я хочу запустить. Например:

$ which pip 
/opt/local/bin/pip 
$ sudo /opt/local/bin/pip install foo 

Это не идеал, но он работает и не разрушает secure_path.

Смежные вопросы