命令以 root 运行,但不以 sudo 运行

命令以 root 运行,但不以 sudo 运行

我正在使用和用户运行supervisorctl命令。使用用户可以,但使用 则不起作用。以下是输出:rootwithout rootrootsudo

[ec2-user@stg etc]$ sudo supervisorctl status
sudo: supervisorctl: command not found

现在我以root用户身份运行:

[ec2-user@stg etc]$ sudo su -
Last login: Tue Jun  6 03:02:55 UTC 2017 on pts/1
[root@stg ~]# supervisorctl status
kafka                            BACKOFF   Exited too quickly (process log may have details)
zookeeper                        RUNNING   pid 24697, uptime 0:25:11

PATH变量如下所示:

[root@stg ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

[ec2-user@stg etc]$ echo $PATH
/home/ec2-user/.pyenv/shims:/home/ec2-user/.pyenv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin

请帮助我修复它。

答案1

这是一个常见问题,您已正确识别出根源。有两种可能的解决方案,通过在 bash 配置文件中添加以下内容,确保所有PATH存在的条目root 也存在ec2-user

export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin:$PATH"

或者,在我看来,更优雅的解决方案是确保您PATH包含包含的特定目录supervisorctl

您应该首先通过whereis supervisorctl在下运行来找到父目录root

# whereis supervisorctl
/whatever/path/bin

然后应该将其包含在你的 bash 配置文件中

$PATH="/whatever/path/bin:$PATH"

相关内容