Unlike regular system shells, Eshell never invokes kernel functions
directly, such as exec(3)
. Instead, it uses the Lisp functions
available in the Emacs Lisp library. It does this by transforming the
input line into a callable Lisp form.3
The command can be either an Elisp function or an external command. Eshell looks first for an alias with the same name as the command, then a built-in command or a function with the same name; if there is no match, it then tries to execute it as an external command.
The semicolon (;
) can be used to separate multiple command
invocations on a single line. A command invocation followed by an
ampersand (&
) will be run in the background. Eshell has no job
control, so you can not suspend or background the current process, or
bring a background process into the foreground. That said, background
processes invoked from Eshell can be controlled the same way as any
other background process in Emacs.