Next: , Up: Commands

2.1 Invocation

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.1

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.


Footnotes

[1] To see the Lisp form that will be invoked, type: ‘eshell-parse-command "echo hello"