ইমাকস `শেল-মোড` কীভাবে সুডোর জন্য অনুরোধ জানবে?


17

ইন shell-mode, sudo CMDইকো অঞ্চলে একটি কমান্ডের মতো একটি প্রম্পট খোলে:

[sudo] password for root: 

এটি কিভাবে করতে জানে? আফাইক, এই আচরণটি sudoযথারীতি চলমান হয়ে উঠতে পারে না , কারণ readবিল্টিন এমন প্রম্পট তৈরি করে না।

উত্তর:


22

এটি একটি প্রক্রিয়া ফিল্টার মাধ্যমে করা হয়।

ডিফল্টরূপে 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এবং তারপরে sudo প্রম্পটে টাইপ 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হারিয়ে গেছে, তবে আপনি এখনও অবিলম্বে সাধারণ পরিস্থিতি দেখতে পারবেন see আপনি M-x load-library RET comint.el RETবিহীন কোড লোড করতে এবং তারপরে আরও বিস্তারিত ব্যাকট্রিজ পেতে পুরো প্রক্রিয়াটি পুনরাবৃত্তি করতে পারেন।


দুর্দান্ত ডিবাগিং টিপ!
ক্লেমে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.