我在 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,但这可能不是您的最佳举措。