Головоломка над судо и дорожками

У меня есть несколько программ, которые находятся в /usr/local/bin которых требуются права root.

Если я убегу

 sudo my_prog 

я получил

 sudo: my_prog: command not found 

Я должен написать

 sudo /usr/local/bin/my_prog 

чтобы программа работала.

Может ли кто-нибудь объяснить мне, почему я должен это делать? /usr/local/bin находится в корневом $PATH и в моем.

У вас может быть /usr/local/bin в корневом $PATH но просто выполнение sudo не дает вам профиля root, где установлен этот PATH

вы получите его после входа в систему с правами root

 su - 

или

 sudo -i 

Это дает вам корневую оболочку.

Если вы хотите остаться на одной линии, попробуйте использовать

 sudo su -c 'my_prog' 

если это не работает, принудительно используйте его -l

 sudo su -l -c 'my_prog'