ข้อผิดพลาดเกิดขึ้นเนื่องจากไบนารีที่คุณพยายามโทรจากบรรทัดคำสั่งเป็นเพียงส่วนหนึ่งของตัวแปร PATH ของผู้ใช้ปัจจุบัน แต่ไม่ใช่ส่วนหนึ่งของ PATH ของผู้ใช้รูท
คุณสามารถตรวจสอบสิ่งนี้ได้โดยค้นหาเส้นทางของไบนารี่ที่คุณพยายามเข้าถึง ในกรณีของฉันฉันพยายามโทร "bettercap-ng" ดังนั้นฉันวิ่ง
$ which bettercap-ng
output: /home/user/work/bin/bettercap
ฉันตรวจสอบว่าตำแหน่งนี้เป็นส่วนหนึ่งของ PATH ของผู้ใช้รูทของฉันหรือไม่
$ sudo env | grep ^PATH
เอาท์พุท: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
ดังนั้น sudo หาเลขฐานสองที่ฉันพยายามโทรจาก commandline ไม่ได้ ดังนั้นจะส่งคืนคำสั่ง error ที่ไม่พบ
คุณสามารถสั่ง sudo เพื่อใช้ PATH ของผู้ใช้ปัจจุบันเมื่อเรียกเลขฐานสองดังต่อไปนี้
$ sudo -E env "PATH=$PATH" [command] [arguments]
ในความเป็นจริงเราสามารถสร้างนามแฝงได้จาก:
$ alias mysudo='sudo -E env "PATH=$PATH"'
นอกจากนี้ยังเป็นไปได้ที่จะตั้งชื่อนามแฝงว่า sudo แทน sudo ดั้งเดิม
โปรดดูวิดีโอนี้สำหรับการแก้ปัญหาทีละขั้นตอน