Überprüfen Sie zunächst, welches sudo in Ihrer eshell-Sitzung ausgeführt wird. Es kann das Sudo Ihres Systems sein:
$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo
oder eshell's sudo:
$ which sudo
sudo is a compiled Lisp function in `em-tramp.el'
$ which eshell/sudo
eshell/sudo is a compiled Lisp function in `em-tramp.el'
Eshell die sudo verwendet Tramps su oder sudo - Methode. Diese Befehle befinden sich im Modul eshell-tramp, das standardmäßig deaktiviert ist.
Ich werde den Sudo-Fall von eshell behandeln, da er in Emacs integriert ist und nicht von Ihrer Betriebssystemdistribution abhängt:
Laden Sie das eshell-tramp Modul:
(require 'em-tramp) ; to load eshell’s sudo
Wechseln Sie zu eshell's sudo
durch Vorziehen von eingebauten Befehlen
(setq eshell-prefer-lisp-functions t)
Es scheint, dass wir in Emacs 24.4 einstellen müssen
(setq eshell-prefer-lisp-variables t)
durch Erstellen eines Alias (Snippet in Eshell ausführen)
alias sudo 'eshell/sudo $*'
Durch den Befehl alias definierte (oder gelöschte) Aliase werden automatisch in die von eshell-aliases-file angegebene Datei geschrieben , die Sie auch direkt bearbeiten können (obwohl Sie sie manuell neu laden müssen).
Aktivieren Sie abschließend die Kennwortzwischenspeicherung für eshell's sudo (und TRAMP):
(setq password-cache t) ; enable password caching
(setq password-cache-expiry 3600) ; for one hour (time in secs)
PS Wenn Sie Ihre Eingabeaufforderung mit der Funktion " eshell-prompt-regex" geändert haben, müssen Sie die Eingabeaufforderung " eshell-prompt-regexp" entsprechend anpassen . Falsche reguläre Ausdrücke für Eingabeaufforderungen können einige Funktionen von eshell beeinträchtigen - einschließlich der Kennworterkennung.
Nach dem Befolgen dieser Anweisungen wird which sudoweiterhin /usr/bin/sudoauf meinem System angezeigt .
Boccaperta-IT,
Hast du es mit einem frischen Muschelpuffer getestet? Die aktuelle Eshell-Sitzung des IIRC übernimmt keine Änderungen.
kmicu
Ja. Ich habe den Emacs-Daemon neu gestartet und einen neuen Client geöffnet.
Boccaperta-IT
Nach flacher Prüfung sehe ich, dass (setq eshell-prefer-lisp- variables t) in Emacs 24.4 erforderlich ist. @ Boccaperta-IT kannst du bestätigen, ob es bei dir funktioniert?
kmicu
Funktioniert immer noch nicht /usr/bin/sudo(ich verwende jedoch Emacs 25.0.50.1)
Boccaperta-IT
4
Um sudo arbeiten in Emacs 26 (wahrscheinlich das gleiche für Emacs 25) ohne einen Alias machen musste ich hinzufügen eshell-trampzu eshell-modules-list.
which sudo
weiterhin/usr/bin/sudo
auf meinem System angezeigt ./usr/bin/sudo
(ich verwende jedoch Emacs 25.0.50.1)Um sudo arbeiten in Emacs 26 (wahrscheinlich das gleiche für Emacs 25) ohne einen Alias machen musste ich hinzufügen
eshell-tramp
zueshell-modules-list
.quelle
(require 'esh-module)