Команда запускается с рутом, но не с sudo

Я бегу 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 ответ

Это распространенная проблема, и вы правильно определили источник. Есть два возможных решения, убедившись, что все PATH записи для root также присутствуют для ec2-user добавив следующее в ваш профиль bash

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

Или, IMO, более элегантное решение, убедитесь, что ваш PATH включает в себя конкретный каталог, содержащий supervisorctl,

Вы должны начать с поиска родительского каталога, запустив whereis supervisorctl под root,

# whereis supervisorctl
/whatever/path/bin

Который затем должен быть включен в ваш профиль Bash

$PATH="/whatever/path/bin:$PATH"
Другие вопросы по тегам