В першу чергу перевірки , яку Судо виконується у вашій eshell сесії. Це може бути судо вашої системи:
$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/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 в Судо використовує су або SUDO метод бродяга в. Ці команди знаходяться в модулі ешел-трамп, який за замовчуванням відключений.
Я розкрию випадок судового справи eshell, оскільки він внутрішній для Emacs і не залежить від вашого дистрибутива ОС:
Завантажити модуль ешел-трамп:
(require 'em-tramp) ; to load eshell’s sudo
Переключитися на судо Ешелла
віддаючи перевагу вбудованим командам
(setq eshell-prefer-lisp-functions t)
Здається, що в Emacs 24.4 нам потрібно встановити
(setq eshell-prefer-lisp-variables t)
створивши псевдонім (виконайте фрагмент в ешеллі)
alias sudo 'eshell/sudo $*'
Псевдоніми, визначені (або видалені) командою псевдонім, автоматично записуються у файл, названий eshell-aliases-файл , який ви також можете редагувати безпосередньо (хоча вам доведеться перезавантажувати його вручну).
Нарешті увімкніть кешування паролем для судового коду (і TRAMP):
(setq password-cache t) ; enable password caching
(setq password-cache-expiry 3600) ; for one hour (time in secs)
PS Якщо ви змінили своє запит на функцію eshell-prompt , тоді не забудьте відповідним чином відрегулювати підказку regex eshell-prompt-regexp . Неправильний регулярний регулярний вираз може порушити деякі функції ешелла, включаючи виявлення пароля.
which sudo
все ще відображається/usr/bin/sudo
в моїй системі.