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.