Category:Shell
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:
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*). The shell buffer is a normal buffer, so you can edit and move around as usual, plus you have special keys to interact with the shell, like [M-p] to call the previous history command or [C-c r] to go to the beginning of the last output (see all keys in the menu).
See also: shell-here to open up a shell in the current directory; shell-pop to pop up and pop out a shell buffer window easily (both installable via ELPA).
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.