Dies geschieht über einen Prozessfilter.
Standardmäßig comint-output-filter-functions
enthält comint-watch-for-password-prompt
dies die Filterfunktion, die dies behandelt.
Wenn es passenden Text sieht comint-password-prompt-regexp
dann ruft es send-invisible
den Benutzer nach einem Kennwort gefragt.
Weitere Informationen zur Funktionsweise von Prozessfiltern finden Sie unter C-hig (elisp)Filter Functions
Bearbeiten: Beachten Sie M-x toggle-debug-on-quit
im Nachhinein , dass Sie an der Eingabeaufforderung sudo C-geinen Backtrace eingeben können, der anzeigt , was los ist. z.B:
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>: ")
Die Ausgabe ist aufgrund des ausgewerteten Byte-kompilierten Codes minimal, sodass die Details von comint-output-filter-functions
verloren gehen, Sie jedoch die allgemeine Situation immer noch sofort sehen können. Sie können auch M-x load-library
RET comint.el
RETden nicht kompilierten Code laden und dann den gesamten Vorgang wiederholen, um eine detailliertere Rückverfolgung zu erhalten.