먼저 eshell 세션에서 어떤 sudo 가 실행 되는지 확인하십시오 . 시스템의 sudo가 될 수 있습니다.
$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo
또는 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의 su 또는 sudo 메소드를 사용합니다. 이 명령은 eshell-tramp 모듈에 있으며 기본적으로 비활성화되어 있습니다.
eshell의 sudo 사례를 다루겠습니다. Emacs 내부에 있으며 OS 배포판에 의존하지 않기 때문입니다.
eshell- 트램프 모듈 장착 :
(require 'em-tramp) ; to load eshell’s sudo
eshell의 sudo로 전환
내장 명령을 선호함으로써
(setq eshell-prefer-lisp-functions t)
Emacs 24.4에서 설정해야 할 것 같습니다
(setq eshell-prefer-lisp-variables t)
별명 을 작성하여 (eshell에서 스 니펫 실행)
alias sudo 'eshell/sudo $*'
alias 명령으로 정의되거나 삭제 된 별명은 eshell-aliases-file 이라는 이름의 파일에 자동으로 작성되며 직접 편집 할 수도 있습니다 (수동으로 다시로드해야 함).
마지막으로 eshell의 sudo (및 TRAMP)에 비밀번호 캐싱을 활성화하십시오.
(setq password-cache t) ; enable password caching
(setq password-cache-expiry 3600) ; for one hour (time in secs)
PS eshell-prompt-function으로 프롬프트를 변경 한 경우 그에 따라 프롬프트 정규 표현식 eshell-prompt-regexp 를 조정해야합니다 . 잘못된 프롬프트 정규 표현식은 암호 감지를 포함한 일부 eshell 기능을 손상시킬 수 있습니다.
which sudo
후에도 여전히/usr/bin/sudo
시스템에 표시됩니다 .