यह कहते हुए कि गूंज क्षेत्र में shell-mode
एक कमांड sudo CMD
खुल जाती है:
[sudo] password for root:
यह कैसे करना जानता है? AFAIK, यह व्यवहार sudo
सामान्य रूप से चलने से नहीं उठ सकता है , क्योंकि read
अंतर्निहित इस तरह का संकेत नहीं देता है।
यह कहते हुए कि गूंज क्षेत्र में shell-mode
एक कमांड sudo CMD
खुल जाती है:
[sudo] password for root:
यह कैसे करना जानता है? AFAIK, यह व्यवहार sudo
सामान्य रूप से चलने से नहीं उठ सकता है , क्योंकि read
अंतर्निहित इस तरह का संकेत नहीं देता है।
जवाबों:
यह एक प्रक्रिया फ़िल्टर के माध्यम से किया जाता है।
डिफ़ॉल्ट रूप से comint-output-filter-functions
शामिल है comint-watch-for-password-prompt
, जो फ़िल्टर फ़ंक्शन है जो इसे संभालता है।
यदि यह पाठ मिलान देखता है comint-password-prompt-regexp
तो यह send-invisible
उपयोगकर्ता को पासवर्ड के लिए संकेत देता है।
फ़िल्टर कैसे काम करता है, इसके बारे में अधिक जानकारी के लिए देखें C-hig (elisp)Filter Functions
संपादित करें: एक अनुवर्ती के रूप में, यह भी ध्यान दें कि आप M-x toggle-debug-on-quit
और फिर सूडो प्रॉम्प्ट प्रकार C-gपर बैकट्रेस प्राप्त कर सकते हैं जो दिखाएगा कि क्या चल रहा है। उदाहरण के लिए:
Debugger entered--Lisp error: (quit)
read-string("[sudo] password for <username>: " nil t nil)
read-passwd("[sudo] password for <username>: ")
send-invisible("[sudo] password for <username>: ")
comint-watch-for-password-prompt("[sudo] password for <username>: ")
run-hook-with-args(comint-watch-for-password-prompt "[sudo] password for <username>: ")
comint-output-filter(#<process shell> "[sudo] password for <username>: ")
बाइट-संकलित कोड के मूल्यांकन के कारण आउटपुट न्यूनतम है, इसलिए इसका विवरण comint-output-filter-functions
खो गया है, लेकिन आप अभी भी सामान्य स्थिति देख सकते हैं। आप M-x load-library
RET comint.el
RETअसम्बद्ध कोड को लोड करने के लिए भी कर सकते हैं और फिर अधिक विस्तृत बैकट्रेस प्राप्त करने के लिए पूरी प्रक्रिया को दोहरा सकते हैं।