Błąd występuje, ponieważ plik binarny, który próbujesz wywołać z wiersza poleceń, jest tylko częścią zmiennej PATH bieżącego użytkownika, ale nie jest częścią PATH użytkownika root.
Możesz to sprawdzić, lokalizując ścieżkę pliku binarnego, do którego próbujesz uzyskać dostęp. W moim przypadku próbowałem nazwać „bettercap-ng”. Więc pobiegłem
$ which bettercap-ng
output: /home/user/work/bin/bettercap
Sprawdziłem, czy ta lokalizacja jest częścią ŚCIEŻKI mojego użytkownika root.
$ sudo env | grep ^PATH
wydajność: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Więc sudo nie może znaleźć pliku binarnego, który próbuję wywołać z wiersza poleceń. W związku z tym zwraca polecenie błędu nie znaleziono.
Możesz polecić sudo, aby używał ŚCIEŻKI bieżącego użytkownika podczas wywoływania pliku binarnego, jak poniżej.
$ sudo -E env "PATH=$PATH" [command] [arguments]
W rzeczywistości można z niego zrobić alias:
$ alias mysudo='sudo -E env "PATH=$PATH"'
Można także nazwać sam alias sudo, zastępując oryginalne sudo.
Zapoznaj się z tym filmem, aby uzyskać rozwiązanie krok po kroku