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
?
sudo
在运行任何命令之前清理环境。在此过程中,如果指令的值secure_path
被设置,它将被用作PATH
为sudo
命令,而不是当前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/bin
到sudo
's PATH
:
传入命令PATH
的环境which
:
sudo PATH="$PATH" which pip3
Run Code Online (Sandbox Code Playgroud)
任何想要的PATH
也可以设置。
运行时保持当前环境sudo
:
sudo -E which pip3
Run Code Online (Sandbox Code Playgroud)secure_path
通过将 a#
放在前面禁用该值或删除该行以保持当前PATH
:
# Defaults secure_path="....."
Run Code Online (Sandbox Code Playgroud)
相反,您还可以修改secure_path
以在开头添加/usr/.../anaconda3/bin
到它。
添加PATH
到env_keep
指令以保持PATH
在sudo
提供的环境中:
Defaults env_keep += "PATH"
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
3989 次 |
最近记录: |