Команда запускается с рутом, но не с 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"