Обычно пользователь с UID 0 (т. Е. Root) имеет модифицированный $PATH
набор, который включает в себя такие каталоги, как /sbin
и /usr/sbin
, в то время как у «обычного» пользователя их нет (так как многие программы в этих каталогах требуют привилегий суперпользователя и не очень пригодны для этих целей. нормальные пользователи в любом случае). Таким образом, если обычный пользователь хочет вызвать что-либо в тех каталогах, которые отсутствуют в его $PATH
, он должен указать полный путь к программе, в то время как «root» может вызывать их без этой необходимости.
Вызов sudo <program>
также не работает, потому sudo
что наследует свое окружение (и, следовательно, $PATH
) от вызывающего процесса (который непривилегирован и, следовательно, отсутствует /sbin
).
Вы можете попробовать это, вызвав echo $PATH
один из них в оболочке вашего пользователя и один раз в root-shell (не с sudo
).