当我使用 sudo 时,为什么这个目录没有添加到我的 PATH 中?

当我使用 sudo 时,为什么这个目录没有添加到我的 PATH 中?

我刚刚从源代码编译并安装了 Apache Web 服务器,现在我想将脚本添加apachectlPATH.

我知道我需要将目录添加到root用户目录PATH(因为脚本需要以 root 身份运行),所以我想我会尝试添加以下行:

  • 文件:/root/.bashrc
#
# add directory of apachectl to PATH
PATH=$PATH:/usr/local/apache2/bin

我知道我添加的路径是正确的,但如果我运行命令:

sudo apachectl start

我得到:

sudo: apachectl: command not found

我怎样才能将此目录添加到我的PATH

答案1

将目录添加到 sudo 的方法PATH(正如您发现的那样)不是与 root 相同),就是编辑该sudoers文件:

sudo visudo

然后,找到这一行:

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

并将您的目录添加到其末尾:

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

或者,您可以创建要运行的可执行文件的符号链接并将它们直接放入/usr/local/bin

sudo find /usr/local/apache2/bin -type f -executable -exec ln -s {} /usr/local/bin/

添加别名可以sudo导出您的环境,但有点不优雅,更重要的是,它仅适用于一个用户。

相关内容