Ошибка возникает из-за того, что двоичный файл, который вы пытаетесь вызвать из командной строки, является только частью переменной PATH текущего пользователя, но не является частью PATH корневого пользователя.
Вы можете убедиться в этом, найдя путь к двоичному файлу, к которому вы пытаетесь получить доступ. В моем случае я пытался назвать "bettercap-ng". Итак, я побежал,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
Я проверил, является ли это местоположение частью PATH моего корневого пользователя.
$ sudo env | grep ^PATH
выход: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Поэтому sudo не может найти двоичный файл, который я пытаюсь вызвать из командной строки. Следовательно, возвращает ошибку команда не найдена.
Вы можете указать sudo использовать PATH текущего пользователя при вызове двоичного файла, как показано ниже.
$ sudo -E env "PATH=$PATH" [command] [arguments]
На самом деле из него можно сделать псевдоним:
$ alias mysudo='sudo -E env "PATH=$PATH"'
Также возможно назвать псевдоним сам sudo, заменив оригинальный sudo.
Пожалуйста, обратитесь к этому видео для пошагового решения