我的问题是,当我这样做时:
$ python =>我把/ a / b / c / python作为我的目录
但如果我这样做 $ sudo哪个python =>我得到/ d / e / python作为结果
如何更改sudo以匹配正常情况,这使得无法从源代码安装库。
答案 0 :(得分:0)
它使用$ PATH中找到的第一个
尝试做
echo $PATH
然后
sudo bash -c 'echo $PATH'
我敢打赌这些是不同的。
在任何情况下,对于你在/ root和当前用户中使用的shell,通常都会有某种类型的rc脚本,只需重新排列环境变量中的路径即可。
答案 1 :(得分:0)
我会先试试这个:
sudo -i which python
(间接)导致root
用户的配置文件运行,包括路径的任何非默认配置。 (默认情况下,sudo
不会对此感到烦恼。)
如果这不起作用,则会告诉您/usr/local/bin
不在root
用户个人资料设置的路径中(或者不在/usr/bin
之前),所以您可以选择更改root
用户的个人资料并使用上述内容,或者使用:
sudo -E which python
保留您的路径(以及您的其他环境)。这可能不太安全。
有关每个选项的完整详情,请参阅the sudo
man-page。
答案 2 :(得分: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。