Emacs에서 쉘, eshell 및 용어의 차이점은 무엇입니까?


60

Emacs에서는 다음 명령을 사용하여 쉘을 실행할 수 있습니다.

M-x term

M-x shell

M-x eshell

이 세 가지의 차이점은 무엇입니까?

답변:


61

shell이 세 가지 중에서 가장 오래된 것입니다. Emacs를 사용 comint-mode하여 서브 쉘 (예 :)을 실행합니다 bash. 이 모드에서는 Emacs를 사용하여 명령 행을 편집합니다. 하위 프로세스에는 Enter를 누를 때까지 입력이 표시되지 않습니다. 이맥스는 멍청한 터미널처럼 행동하고 있습니다. 색상 코드는 지원하지만 커서 이동과 같은 것은 지원하지 않으므로 curses 기반 응용 프로그램을 실행할 수 없습니다.

termEmacs Lisp로 작성된 터미널 에뮬레이터입니다. 이 모드에서는 누른 키가 하위 프로세스로 직접 전송됩니다. Emacs가 아니라 쉘이 제공하는 라인 편집 기능을 사용하고 있습니다. 또한 커서 이동과 같은 고급 터미널 기능을 사용하는 프로그램을 실행할 수도 있습니다 (예 : Emacs 에서 nano또는 less내부에서 실행할 수 있음 ).

eshellEmacs Lisp에서 직접 구현 된 쉘입니다. bash하위 프로세스로 실행 중이 거나 다른 쉘 이 없습니다 . 그 결과, 구문은 같은 꽤있다 bashsh. 프로세스 출력을 직접 Emacs 버퍼로 재전송하는 것과 같은 것을 허용합니다 (try echo hello >#<buffer results>).


19

Xahlee 페이지 에 따르면 :

shell 운영 체제의 명령 행 인터페이스에 대한 표준 emacs 인터페이스입니다.

term(ansi-term은 오늘날 용어와 거의 동일합니다. 패키지는 다르지만 이제는 term.el에 정의되어 있습니다) 터미널 에뮬레이터입니다. {xterm, gnome-terminal, puTTY}와 같은 전용 터미널 앱처럼 동작합니다. emacs 쉘 ​​인터페이스보다 더 많은 쉘 응용 프로그램과 호환되지만 커서 이동과 같은 표준 emacs 키는 작동하지 않습니다 (터미널을 에뮬레이트하기 때문에).

eshell전적으로 emacs lisp로 작성된 쉘입니다. 참고 : bash 에뮬레이터가 아닙니다. Eshell은 자체적으로 쉘이지만 bash 또는 다른 쉘과 유사합니다.

어느 것을 사용해야합니까?

그것은 당신의 선호에 달려 있습니다.

shell {grep, du, ls, sort, cat, head, tail, uname,…}과 같은 클래식 / 표준 유닉스 쉘 명령의 일반적인 사용에 좋습니다.

term & ansi-term ssh 또는 다른 명령 행 대화식 인터페이스 (예 : {python, ruby, lisp} 쉘) 또는 텍스트 기반 GUI 앱 (예 : {vim, synaptic,…})을 실행하려는 경우 좋습니다.

eshell bash가 설치되지 않은 Microsoft Windows 또는 emacs lisp에 직접 액세스 할 수 있기 때문에 emacs lisp 프로그래머 인 경우 특히 좋습니다.


언급 한 모든 명령 (grep, du, ls 등)은 쉘에 내장 된 프로그램 및 명령입니다. eshell당신이 그 프로그램을 설치했다면 그들도 가질 것이다.
Bart Louwers

1
@Bart는 시스템에서 grep을 제거하고 eshell에서 grep 조치를 수행하려고 시도합니다. eshell의 grep이 시스템에서 grep이 아니라는 것을 알 수 있습니다. which grepeshll에서 "eshell / grep는`em- 유닉스에서 eshell은 grep과 같은 작은 도구가 설치되어 있지 않은 MS에서 매우 유용하다고 말한 것처럼 시스템의 grep을 eshell에서 실행할 수 있습니다.
CodyChan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.