使用 sudo 运行时未找到 pyenv 命令

使用 sudo 运行时未找到 pyenv 命令

04 在 WSL 下。即使使用 sudo 的 PATH,我的 PATH 中也有 pyenv 的二进制文件,但由于某种原因,我无法使用 sudo 运行它。

test@pc:~$ which pyenv
/home/test/.pyenv/bin/pyenv
test@pc:~$ sudo which pyenv
test@pc:~$ sudo echo $PATH | perl -p -e 's/:/\n/g' | grep pyenv
/home/test/.pyenv/plugins/pyenv-virtualenv/shims
/home/test/.pyenv/shims
/home/test/.pyenv/bin

我尝试过了

sudo -i 
sudo -E

使用 pyenv 不起作用。没有 sudo 也可以正常工作,但由于权限问题,我无法安装 python。我做错了什么?

答案1

出于安全原因,sudo使用其自己的文件来定位程序secure_path,定义在/etc/sudoers/

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

还要注意,执行 时sudo echo $PATH$PATH变量在传递给 sudo 之前会由用户的 shell 展开。要使用 sudo 查看 root 的路径,你需要执行类似以下操作sudo bash -c 'echo $PATH'

相关内容