“sudo pip”与普通的“pip”不同

PKu*_*uhn 4 python sudo environment-variables pip

当我执行

which pip3
Run Code Online (Sandbox Code Playgroud)

它指向

/usr/.../anaconda3/bin/pip3
Run Code Online (Sandbox Code Playgroud)

然而,当我跑

sudo which pip3
Run Code Online (Sandbox Code Playgroud)

结果是

/usr/bin/pip3
Run Code Online (Sandbox Code Playgroud)

这个问题来自哪里,我如何实现sudo pip也指向/usr/.../anaconda3/bin/pip3

hee*_*ayl 6

sudo在运行任何命令之前清理环境。在此过程中,如果指令的值secure_path被设置,它将被用作PATHsudo命令,而不是当前PATH

在我的系统中:

% sudo grep -E 'secure_path' /etc/sudoers
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Run Code Online (Sandbox Code Playgroud)

所以我有:

% echo $PATH
/home/foobar/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

% sudo bash -c 'echo $PATH' 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

您可以做些什么来保留当前路径或添加/usr/.../anaconda3/binsudo's PATH