Как изменить путь к питону в состоянии sudo? - PullRequest
2 голосов
/ 07 марта 2012

Моя проблема в том, что когда я делаю:

$ which python =>, я получаю / a / b / c / python в качестве моего каталога

, но если я делаю $ sudo which python => В результате я получаю / d / e / python

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

Ответы [ 3 ]

0 голосов
/ 07 марта 2012

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

sudo -i which python

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

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

sudo -E which python

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

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

0 голосов
/ 31 декабря 2014

Согласно 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.

0 голосов
/ 07 марта 2012

Используется первый из $ PATH

попробуйте выполнить

echo $PATH

затем

sudo bash -c 'echo $PATH'

Могу поспорить, что они разные.

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

...