In Emacs, the features shell
, term
, and eshell
are different commands used for similar goals.
When executed, shell
and term
create active processes in Emacs. I expected the same for eshell
. However, eshell
does not create an active process in Emacs.
Where does this behaviour come from?
Try starting emacs without the init file and executing each of the three commands in separate sessions. Then, try to quit emacs by executing the command named save-buffers-kill-terminal
(default binding is C-x C-c
).
When doing this test with term
and shell
, Emacs prompts the user with:
Active processes exist; kill them and exit anyway? (yes or no)
While the same recipe on eshell
does not trigger the same question. It is simply possible to directly quit Emacs.
Why is the treatment different? Why does eshell
not create an active process in Emacs? Is there any architectural explanation?