为什么我将某个命令添加到 PATH 后,sudo 找不到它?

为什么我将某个命令添加到 PATH 后,sudo 找不到它?

我想将一些命令添加到PATH中,以便可以方便地使用它们,例如:

export $PATH = "$PATH:/opt/storm/bin"

但有时storm需要root权限,但是当我使用它时sudo,Ubuntu找不到该命令。

sudo storm nimbus

使用时如何找到这些命令sudo

答案1

您必须将路径添加到sudo路径中。

运行命令sudo visudo

你会看到如下一行:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

现在在这里添加你的命令的路径就可以了。

例如:

$ sudo storm
sudo: storm: command not found

现在添加如上的路径:

$ sudo visudo 

secure_path="......:/opt/storm/bin"

保存并退出。

现在sudo storm就可以正常工作了。

笔记您还应该将路径添加到默认路径中/etc/profile

答案2

我认为您在用户级别创建了别名。这就是为什么快捷方式仅在用户级别可用。

您应该将该别名命令行添加到 /root 文件夹中的 .bashrc 文件中,而不是 /home/user/.bashrc 中(此 .bashrc 文件属于用户帐户,而不是 root 帐户)。

这样,当您以 root 身份登录时,就可以直接在 shell 中使用别名命令。

答案3

@Maythux 解释了 sudo 搜索可执行文件的安全路径是什么

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

您可以按照答案的建议将路径直接添加到列表中,但更好、更正确的方法是在 /usr/bin 下创建一个符号链接

sudo ln -s -f  /opt/storm/bin/storm /usr/bin/storm

相关内容