¿Cómo dejar que eshell recuerde la contraseña de sudo durante dos minutos?
15
En términos generales bash, cuando ejecuto un sudo ...comando, bash recordará mi contraseña por un tiempo. Esto facilita la tarea de administración de paquetes.
En primer lugar, compruebe qué sudo se ejecuta en su sesión de eshell. Puede ser el sudo de su sistema:
$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo
o el sudo de eshell:
$ 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'
El sudo de Eshell usa el método su o sudo de TRAMP. Estos comandos están en el módulo eshell-tramp, que está deshabilitado de manera predeterminada.
Cubriré el caso sudo de eshell, porque es interno de Emacs y no depende de la distribución de su sistema operativo:
Cargue el módulo eshell-tramp:
(require 'em-tramp) ; to load eshell’s sudo
Cambiar al sudo de eshell
prefiriendo comandos integrados
(setq eshell-prefer-lisp-functions t)
Parece que en Emacs 24.4 necesitamos establecer
(setq eshell-prefer-lisp-variables t)
mediante la creación de un alias (ejecutar fragmento en eshell)
alias sudo 'eshell/sudo $*'
Los alias definidos (o eliminados) por el comando alias se escriben automáticamente en el archivo nombrado por eshell-aliases-file , que también puede editar directamente (aunque tendrá que volver a cargarlo manualmente).
Finalmente habilite el almacenamiento en caché de contraseñas para el sudo de eshell (y TRAMP):
(setq password-cache t) ; enable password caching
(setq password-cache-expiry 3600) ; for one hour (time in secs)
PD Si ha cambiado su solicitud con eshell-prompt-function , recuerde ajustar la solicitud regex eshell-prompt-regexp en consecuencia. La expresión regular incorrecta puede romper algunas funciones de eshell, incluida la detección de contraseña.
Después de seguir estas instrucciones, which sudotodavía se muestra /usr/bin/sudoen mi sistema.
Boccaperta-IT
¿Lo probaste con un nuevo búfer de eshell? La sesión de eshell actual del IIRC no recogerá los cambios.
kmicu
Si. Reinicié emacs daemon y abrí un nuevo cliente.
Boccaperta-IT
Después de una prueba superficial, veo que (setq eshell-prefer-lisp- variables t) se requiere en emacs 24.4. @ Boccaperta-IT, ¿puede confirmar si funciona para usted?
kmicu
Todavía no funciona /usr/bin/sudo(estoy usando Emacs 25.0.50.1, sin embargo)
Boccaperta-IT
4
Para obtener sudo trabajar en Emacs 26 (probablemente el mismo para Emacs 25) sin hacer un alias he tenido que añadir eshell-trampa eshell-modules-list.
which sudo
todavía se muestra/usr/bin/sudo
en mi sistema./usr/bin/sudo
(estoy usando Emacs 25.0.50.1, sin embargo)Para obtener sudo trabajar en Emacs 26 (probablemente el mismo para Emacs 25) sin hacer un alias he tenido que añadir
eshell-tramp
aeshell-modules-list
.fuente
(require 'esh-module)