त्रुटि इसलिए होती है क्योंकि आप जिस बाइनरी को कमांड लाइन से कॉल करने का प्रयास कर रहे हैं वह वर्तमान उपयोगकर्ता के PATH चर का केवल एक हिस्सा है, लेकिन रूट उपयोगकर्ता के PATH का हिस्सा नहीं है।
आप जिस बाइनरी तक पहुँचने का प्रयास कर रहे हैं, उसका पता लगाकर आप इसे सत्यापित कर सकते हैं। मेरे मामले में मैं "बेहूदा-एनजी" कॉल करने की कोशिश कर रहा था। तो मैं भागा,
$ 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 को निर्देशित कर सकते हैं।
$ sudo -E env "PATH=$PATH" [command] [arguments]
वास्तव में, कोई इससे बाहर एक उपनाम बना सकता है:
$ alias mysudo='sudo -E env "PATH=$PATH"'
मूल सूडो के स्थान पर उपनाम उर्फ सूडो का नाम देना भी संभव है।
कृपया इस वीडियो को चरण दर चरण समाधान के लिए देखें