I’ve been trying out
Eshell lately. It’s a shell implemented in Emacs Lisp. Here I’ll mention a few features I’ve found interesting.
M-x shell lets you run a shell inside Emacs. This is quite handy, but it runs a different shell on each platform. For example, it might pull up
bash on Linux and
cmd.exe on Windows. Eshell provides a consistent shell across operating systems.
Eshell is one way to have a bash-like shell on Windows, so it’s an alternative to Cygwin. I haven’t used Eshell or Cygwin extensively, but Cygwin feels like some alien thing awkwardly grafted on to my Windows machine. Eshell feels more like
bash features added.
Of course Eshell is integrated with Emacs. One example of that is being able to run Emacs commands as shell commands. For example, you can run
dired from the shell to open a directory in the Emacs directory editor.
Eshell has pseudo-devices. These act like Unix devices, but they’re implemented in Emacs and therefore run on non-Unix platforms. For example, you could direct command output to
/dev/clip to send it to the system clipboard or to
/dev/kill to add it to the Emacs kill ring.
And now for a little silliness. Here’s an excerpt from Tron featuring Eshell.
It goes by very fast, but here’s the frame that shows Eshell:
For much more on Eshell, see A Complete Guide to Mastering Eshell.