'''Shell''' is a command-line interpreter that provides text [[user interface]] for an [[Operating System]].

+

+

Within Emacs you can interact with various shells and other command-line/text-mode programs running as a sub-process within an Emacs terminal emulator:

+

* [[ ansi-term ]]

+

* [[ shell ]]

+

* [[ term ]]

+

* [[ multi-term ]]

+

+

[[ eshell ]] is a shell (not a terminal emulator, nor a process hosted in one) written in pure [[ Emacs Lisp ]]. It is very powerful, flexible and customizable, but poorly documented at time of writing.

+

+

Emacs itself is fully functional either in a terminal or a windowing system. Some keystrokes available under window systems may not work in a terminal and vice versa.

+

+

User can use shell inside Emacs, with '''shell mode''', '''eshell''' or '''term'''.

+

+

== shell mode ==

+

in this mode, Emacs run an inferior shell, with I/O through [[buffer]] (default to *shell*).

+

+

== eshell ==

+

in this mode, Emacs emulate a shell. It is writen by Emacs Lisp.

+

+

== term ==

+

in this mode, Emacs emulate a terminal, then Emacs invoke a shell that you choose, then link to the terminal.