Помилка трапляється тому, що двійковий файл, який ви намагаєтеся викликати з командного рядка, є лише частиною змінної 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.
Перегляньте це відео для покрокового рішення