Eshell'in sudo şifresini iki dakika hatırlamasına nasıl izin verilir?


15

Genel bir terimde bash, bir sudo ...komut çalıştırdığımda , bash bir süreliğine şifremi hatırlayacaktır. Bu, paket yönetimi görevini kolaylaştırır.

Örneğin:

sudo apt-get update
# password ......
sudo apt-get install turing-brain
# execute without requiring password again.

Eshall'da başarmak mümkün mü?

(Biliyorum termya da ansi-termEmacs'ta bunu yapabilir. Ama eshell Emacs ile daha iyi entegre olur.)

Yanıtlar:


14

Tüm çek Öncelikle Sudo sizin eshell oturumda yürütülür. Sisteminizin sudo olabilir:

$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo

veya eshell 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 , TRAMP'ın su veya sudo yöntemini kullanır. Bu komutlar, varsayılan olarak devre dışı bırakılan eshell-tramp modülündedir.

Eshell sudo davasını ele alacağım, çünkü Emacs'ın içinde ve OS dağıtımınıza bağlı değil:

  1. Eshell-tramp modülünü yükleyin:

    (require 'em-tramp) ; to load eshell’s sudo
    
  2. Eshell sudo'ya geç

    • yerleşik komutları tercih ederek

      (setq eshell-prefer-lisp-functions t)
      

      Görünüşe göre Emacs 24.4'te

      (setq eshell-prefer-lisp-variables t)
      
    • bir takma ad oluşturarak (snippet'i eshell'de çalıştır)

      alias sudo 'eshell/sudo $*'
      

      Takma ad komutu tarafından tanımlanan (veya silinen) takma adlar , doğrudan da düzenleyebileceğiniz eshell-takma adlar dosyası adlı dosyaya otomatik olarak yazılır (manuel olarak yeniden yüklemeniz gerekse de).

  3. Son olarak, eshell sudo (ve TRAMP) için şifre önbelleğe almayı etkinleştirin:

    (setq password-cache t) ; enable password caching
    (setq password-cache-expiry 3600) ; for one hour (time in secs)
    

Not: Eshell-komut istemi işleviyle isteminizi değiştirdiyseniz, bilgi istemi regex eshell-istemi-regexp'yi buna göre ayarlamayı unutmayın . Yanlış bilgi istemi regex şifre tespiti de dahil olmak üzere bazı eshell işlevselliğini bozabilir.


Bu talimatları which sudouyguladıktan /usr/bin/sudosonra sistemimde hala görüntüleniyor .
Boccaperta-IT

Yeni bir eshell tamponu ile test ettiniz mi? IIRC geçerli eshell oturumu değişiklikleri almayacak.
kmicu

Evet. Emacs daemon'u yeniden başlattım ve yeni bir müşteri açtım.
Boccaperta-IT

Sığ testlerden sonra emacs 24.4'te (setq eshell-prefer-lisp değişkenleri t) gerekli olduğunu görüyorum . @ Boccaperta-IT sizin için uygun olup olmadığını teyit edebilir misiniz?
kmicu

Hala çalışmıyor /usr/bin/sudo( Yine de Emacs 25.0.50.1 kullanıyorum)
Boccaperta-IT

4

Ben eklemek zorunda bir takma ad yapmadan Emacs 26 (muhtemelen Emacs 25 için aynı) çalışan sudo'yu almak için eshell-trampiçin eshell-modules-list.

(add-to-list 'eshell-modules-list 'eshell-tramp)

ayrıca gerekir(require 'esh-module)
nymo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.