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.
The command 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 cmd.exe
with 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.
Cygwin rules!!