The sash shell is very limited, though it has small footprint. You can add other shells when you need more powerful scripting or redirection.
But don't try bash, it is broken.
We shall still keep sash for startup shell for the smaller memory footprint. And use enhanced shell only when needed.
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 grammar (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.
Msh is a more powerful shell (note, this is not the one in user/msh). It is much bigger than sash, but not as big as bash. You can enable it from busybox in uClinux-dist menu,
[*]
BusyBoxShells --->
Choose your default shell (none) --->
# choose none here[*] msh
If you want command line editing and history,
Busybox Settings ---> Busybox Library Tuning --->
[*] Command line editing
Since the utilities build-in sash will not be available (eg ls,cat,cp...), you will need to select all the utilities which you might use together with msh into busybox. But don't add too much, as they take up more memory space ...you are warned.
Then make and boot. Do as normal until you need scripting or redirection, run "msh" from sash prompt.
Or, you can run "msh path_to_your_script".
/> msh
BusyBox v1.5.1 (2007-12-06 08:46:57 CST) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
#
HUSH
hush is a very small shell (just 18k) and it has fairly complete
Bourne shell grammar. It even handles all the normal flow control
options such as if/then/elif/else/fi, for/in/do/done, while loops,
etc.
It does not handle case/esac, select, function, here documents ( <<
word ), arithmetic expansion, aliases, brace expansion, tilde
expansion, &> and >& redirection of stdout+stderr, etc.
[*]
BusyBox
Shells --->
Choose your default shell (none) --->
# choose none here[*] hush