使用 sudo 运行自定义命令不起作用

使用 sudo 运行自定义命令不起作用

我在 bash 中创建了一个自定义命令,并将其放置~/.local/bin~/.profile.当我通过终端运行命令时没有sudo问题,但是当我尝试使用sudo输出运行它时:

sudo: my_command: command not found

你能告诉我如何才能做到这一点吗?

答案1

尝试一下sudo -E,这可以保护您的环境,但可能并非在所有情况下都有效。
鉴于您需要由 .profile 设置的环境变量,也请尝试sudo -i执行登录,要求您还使用-c my_command
如果您仍然想sudo my_command在没有任何选项的情况下使用,请检查您的 /etc/sudoers 文件,并确保设置 secure_path 变量并包含包含您的命令的路径。这可能需要将其放置在通常可用的地方,例如/usr/local/bin

答案2

sudo有一个与您不同的 PATH。sudo不读~/.profile

一探究竟:

$ sudo sh
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 

比较您获得的输出以验证~/.local/bin不包括在内。

完成你想做的事情最好这样做:

sudo ~/.local/bin/YourBashScript

从技术上讲,您也可以更改sudo的 PATH,但这可能不是您的最佳举措。

相关内容