L'erreur se produit car le binaire que vous essayez d'appeler à partir de la ligne de commande ne constitue qu'une partie de la variable PATH de l'utilisateur actuel, mais pas une partie de PATH de l'utilisateur root.
Vous pouvez le vérifier en localisant le chemin du fichier binaire auquel vous tentez d'accéder. Dans mon cas, j'essayais d'appeler "bettercap-ng". Alors j'ai couru,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
J'ai vérifié si cet emplacement faisait partie de PATH de mon utilisateur root.
$ sudo env | grep ^PATH
sortie: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Donc, sudo ne peut pas trouver le binaire que j'essaie d'appeler depuis la ligne de commande. Par conséquent, renvoie la commande d'erreur non trouvée.
Vous pouvez demander à sudo d'utiliser le PATH de l'utilisateur actuel pour appeler un binaire comme ci-dessous.
$ sudo -E env "PATH=$PATH" [command] [arguments]
En fait, on peut en faire un alias:
$ alias mysudo='sudo -E env "PATH=$PATH"'
Il est également possible de nommer l'alias lui-même sudo, en remplacement du sudo d'origine.
S'il vous plaît se référer à cette vidéo pour la solution étape par étape