EmacsWiki: Category Shell (original) (raw)

A shell is a command line program that allows you to start other programs, do some job control, do simple programming, chain other programs together via pipes, etc. Your default shell is usually stored in the environment variable $SHELL. It might be bash, tcsh, ksh, or something like that. On Windows, it would probably be cmd.

AnsiTerm: ‘M-x term’ or ‘M-x ansi-term’ runs a full vt100 emulation, running your default shell. Ordinary Emacs keybindings are only available via the ‘C-c’ prefix.

ShellMode: ‘M-x shell’ is dumb terminal emulation, running your default shell. Ordinary Emacs keybindings are available.

EmacsShell: ‘M-x eshell’ is even dumber, doesn’t emulate anything, and runs a shell written in EmacsLisp. That’s why it is available on every system Emacs runs on. You can run elisp functions as commands. All Emacs keybindings are available. However, the package Eat can be used to add terminal emulation to it.

ShellPop: A utility which helps you pop up and pop out shell buffer easily.

Eat: Full-fledged and reasonably fast terminal emulator in pure EmacsLisp, also integrates with EmacsShell to provide terminal emulation in it.

vterm: Full-fledged terminal emulator, powered by libvterm.

There are several modes that look alike but don’t run a shell. Examples include all command-line interfaces that connect to dedicated interpreters such as CommonLisp, Scheme, SQL, etc.


EevMode is different from these modes above. Eev can send a part of buffer to a shell that uses another terminal. Eev opens up another method to deal with a shell in Emacs.