While I use emacs for all all sorts of things, one of the things I haven't done much is run shells from within emacs. I'm not sure why. I'm a command line wonk and adding command line goodness and emacs together seems like a natural. Maybe it's because back in the day I spent a lot of time on MS-DOS systems. You could get a reasonable Unixy facsimile using tools like the MKS toolkit and I like so many other young computer scientists wrote our own small shells when we learned C so I used that insted of command.com.

In any event, I'm trying to use the shell within emacs more.

Here's a quick video showing both shell, which runs whatever your default shell is in an emacs buffer and eshell which is emacs own shell.

I use a couple of packages to smooth over a couple of things.

Virtuelenvwrapper smooths things voer with the python virtaulenv and virtualenvwrapper linux packages:

(use-package virtualenvwrapper :ensure t :config (venv-initialize-interactive-shells) (venv-initialize-eshell))

Only relevant if you use Python and virtualenvs.

and more importantly, better shell:

(use-package better-shell :ensure t :bind (( "C-'" . better-shell-shell) ( "C-;" . better-shell-remote-open)))

cleans things up when using a termianl to connect to a remote machine.

If you use a shell from within emacs as part of your workflow, please post how, or better, make a video!!!!

Enjoy

Relevant links: