L'errore si verifica perché il file binario che si sta tentando di chiamare dalla riga di comando fa parte solo della variabile PATH dell'utente corrente, ma non fa parte del PATH dell'utente root.
Puoi verificarlo individuando il percorso del binario a cui stai tentando di accedere. Nel mio caso stavo cercando di chiamare "bettercap-ng". Quindi ho corso
$ which bettercap-ng
output: /home/user/work/bin/bettercap
Ho verificato se questa posizione fa parte del PERCORSO del mio utente root.
$ sudo env | grep ^PATH
produzione: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Quindi sudo non riesce a trovare il binario che sto cercando di chiamare dalla riga di comando. Quindi restituisce il comando di errore non trovato.
Puoi dire a sudo di usare il PERCORSO dell'utente corrente quando chiami un binario come di seguito.
$ sudo -E env "PATH=$PATH" [command] [arguments]
In effetti, si può ricavarne un alias:
$ alias mysudo='sudo -E env "PATH=$PATH"'
È anche possibile nominare lo stesso sudo sudo, sostituendo il sudo originale.
Fare riferimento a questo video per una soluzione dettagliata