O erro ocorre porque o binário que você está tentando chamar da linha de comando é apenas parte da variável PATH do usuário atual, mas não faz parte do PATH do usuário root.
Você pode verificar isso localizando o caminho do binário que você está tentando acessar. No meu caso eu estava tentando chamar "bettercap-ng". Então eu corri,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
Eu verifiquei se esse local é parte do PATH do meu usuário root.
$ sudo env | grep ^PATH
saída: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Então o sudo não consegue encontrar o binário que estou tentando chamar da linha de comando. Daí retorna o comando de erro não encontrado.
Você pode direcionar o sudo para usar o PATH do usuário atual ao chamar um binário como abaixo.
$ sudo -E env "PATH=$PATH" [command] [arguments]
Na verdade, pode-se criar um alias:
$ alias mysudo='sudo -E env "PATH=$PATH"'
Também é possível nomear o próprio alias sudo, substituindo o sudo original.
Por favor, consulte este vídeo para a solução passo a passo