Emacs'ta kabuk, eshell ve terim arasındaki fark nedir?


60

Emacs'ta aşağıdaki komutları kullanarak bir kabuk çalıştırabilirim -

M-x term

M-x shell

M-x eshell

Bu üç arasındaki fark nedir?

Yanıtlar:


61

shellbu 3 seçeneğin en eskisi. comint-modeBir alt kabuk çalıştırmak için Emacs kullanır (örn. bash). Bu modda, bir komut satırını düzenlemek için Emacs kullanıyorsunuz. Alt işlem, Enter tuşuna basana kadar herhangi bir girdi görmüyor. Emacs aptal bir terminal gibi davranıyor. Renk kodlarını destekliyor, ancak imleci hareket ettirmek gibi şeyleri desteklemiyor, bu nedenle curses tabanlı uygulamaları çalıştıramazsınız.

termEmacs Lisp ile yazılmış bir terminal emülatörüdür. Bu modda, bastığınız tuşlar doğrudan alt işleme gönderilir; Emac'ın değil, kabuğun sunduğu çizgi düzenleme yeteneklerini kullanıyorsunuz. Ayrıca imleç hareketi gibi gelişmiş uçbirim yeteneklerini kullanan programları çalıştırmanıza izin verir (örn . Emacs içinde nanoveya lessiçinde çalışabilirsiniz ).

eshelldoğrudan Emacs Lisp'te uygulanan bir kabuktur. Çalışan bashveya alt kabuk olarak başka bir kabuk değil . Sonuç olarak, sözdizimi bashveya ile tamamen aynı değildir sh. Bir işlemin çıktısını doğrudan Emacs tamponuna (dene echo hello >#<buffer results>) yeniden yönlendirmek gibi şeylere izin verir .


19

Xahlee sayfasına göre :

shell İşletim Sisteminin komut satırı arabirimine standart emacs arabirimidir.

term(ansi terimi, bugün terimi ile hemen hemen aynıdır. Farklı paketlerdi, ama şimdi ikisi de term.el'de tanımlandı) bir terminal emülatörüdür. {Xterm, gnome-terminal, puTTY} gibi özel bir terminal uygulaması gibi davranır. Emacs kabuk arayüzünden daha fazla kabuk uygulamasıyla uyumludur, ancak hareketli imleç gibi standart emac tuşları burada çalışmaz (çünkü bir terminali taklit ediyor).

eshelltamamen emacs lisp ile yazılmış bir kabuktur. Not: bir bash emülatörü değil. Eshell, tek başına bir kabuktur, ancak bash veya diğer kabuklara benzer.

Hangisini kullanmalısın?

Tercihinize göre değişir.

shell {grep, du, ls, sort, cat, head, tail, uname,…} gibi klasik / standart unix kabuk komutlarının genel kullanımı için iyidir.

term & ansi-term ssh veya başka bir komut satırı etkileşimli arabirimi ({python, ruby, lisp} shell gibi) veya {vim, synaptic,…} gibi metin tabanlı bir GUI uygulaması çalıştırmak istiyorsanız, kullanışlıdır.

eshell özellikle bash'ın kurulu olmadığı Microsoft Windows'ta veya eğer bir emacs lisp programcısıysanız, eshell emacs lisp'e doğrudan erişime sahipse iyidir.


Bahsettiğiniz tüm komutlar (grep, du, ls, vs.) kabuğun içine yerleştirilmiş programlar ve komutlardır. eshellyüklü programları varsa, onları da olacak.
Bart Louwers,

1
@Bart sisteminizde grepinizi kaldırmaya çalışın ve eshell'de grep işlemi yapın, eshell'deki grep'in sisteminizde grep olmadığını, which grepeshll'deki "eshell / grep" in derlenmiş bir Lisp işlevi olduğunu söyleyin. unix.el ', sisteminizde grep'in eshell'de çalıştırılabileceğini, çünkü eshell'in MS'de grep gibi çok küçük aletlerin kurulu olmadığını çok yararlı olduğunu söylediğim gibi.
CodyChan
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.