On Thu, 2005-09-15 at 12:24 -0700, Lynn Quam wrote:
Has anyone had experience using the Emacs eshell?
It's neat but incomplete. John Wiegley has long moved on to other projects. I used eshell for a month or two a couple of years ago but had to abandon it and go back to using bash (run via M-x shell). There was a number of reasons why I gave up on eshell. The only one I still remember is lack of support for true piping. Eshell's pipes aren't coroutines like they are in traditional Unixy shells. IIRC, if you do
~ $ foo | bar
eshell reads the entire output of foo into a temp buffer then feeds it to bar. Try this in bash:
| $ yes | head -n 3 | y | y | y | $ time yes | head -n 1000000 | tail -n 4 | y | y | y | y | | real 0m0.086s | user 0m0.045s | sys 0m0.005s
Now try the same thing in Eshell:
| /tmp $ which yes | /usr/bin/yes | /tmp $ which tail | /usr/bin/tail | /tmp $ which ls | eshell/ls is a compiled Lisp function in `em-ls' | /tmp $ yes | head -n 3 | y | y | y | /tmp $ yes | head -n 3
The first time around it prints three y's. When I call it the second time it hangs, leaving me to Ctrl-C out of it.
"M-x version" reports this for me: "GNU Emacs 21.4.1 (x86_64-redhat-linux-gnu, X toolkit, Xaw3d scroll bars) of 2005-05-18 on dolly.build.redhat.com"
Other lispy shells that I know of but have not tried are
- http://www.scsh.net/ - http://lush.sourceforge.net/ - http://clisp.cons.org/clash.html