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


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.