On Tue Jul 03, 2001 at 02:17:06PM -0400, David Douthitt wrote:
I've followed the discussion (somewhat) on different shells. I'm
wondering what the difference is, and in particular, is ash going to
absorbed into busybox or what?
What are the differences between:
* ash
* hush
* lash
Any others I missed? (probably...)
In cvs we currently have lash, hush, msh, ash. For all size comparisons
below, I am leaving BB_FEATURE_COMMAND_EDITING disabled. Enabling it will
add about 8k to the size of each shell.
lash: very small (adds just 10k) and quite usable as a command prompt, but it
is not suitable for any but the most trivial scripting since it does not
understand Bourne shell grammer. It does handle pipes, redirects, and
job control though. Adding in command editing makes it quite nice as
a command prompt.
hush: Also quite small (just 18k) and it has very complete Bourne shell grammer.
It handles if/then/else/fi just fine, but doesn't handle loops like for/do/done
or case/esac and such. It also currently has a problem with job control.
msh: The minix shell (adds just 30k) is quite complete and handles things like
for/do/done, case/esac and all the things you expect a Bourne shell to do. It
is not always pedantically correct about Bourne shell grammer (try running
the shell testscript, tests/sh.testcases, on it and compare vs bash), but for
most things it works quite well. It also uses only vfork, so it can be used
on uClinux systems. I just added this, so there is still room to shrink
it further...
ash: This adds about 60k in the default configuration (I need to review vodz'
latest update, perhaps he has made it smaller again) and is the most complete
and most correct shell included with busybox. This was also recently added,
and both Vladimir and I have been working on it. There are a number of
configurable things at the top of ash.c as well. The Posix math stuff is
currently disabled, but I intend to fix it up when I get some time.
Both msh and ash were very recently added to CVS, and so neither of these
shells supports the STANDALONE_SHELL option yet.