Lỗi xảy ra do nhị phân mà bạn đang cố gắng gọi từ dòng lệnh chỉ là một phần của biến PATH của người dùng hiện tại, nhưng không phải là một phần của PATH của người dùng gốc.
Bạn có thể xác minh điều này bằng cách định vị đường dẫn của nhị phân bạn đang cố truy cập. Trong trường hợp của tôi, tôi đã cố gắng gọi "bettercap-ng". Vì vậy, tôi đã chạy,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
Tôi đã kiểm tra xem vị trí này có phải là một phần của PATH người dùng gốc của tôi không.
$ sudo env | grep ^PATH
đầu ra: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Vì vậy, sudo không thể tìm thấy nhị phân mà tôi đang cố gắng gọi từ dòng lệnh. Do đó trả về lệnh lỗi không tìm thấy.
Bạn có thể trực tiếp sudo để sử dụng PATH của người dùng hiện tại khi gọi một nhị phân như bên dưới.
$ sudo -E env "PATH=$PATH" [command] [arguments]
Trong thực tế, người ta có thể tạo ra một bí danh từ nó:
$ alias mysudo='sudo -E env "PATH=$PATH"'
Cũng có thể đặt tên bí danh là sudo, thay thế sudo gốc.
Vui lòng tham khảo video này để biết giải pháp từng bước