我正在使用和用户运行supervisorctl
命令。使用用户可以,但使用 则不起作用。以下是输出:root
without root
root
sudo
[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"