summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen2003-08-08 23:40:12 +0000
committerEric Andersen2003-08-08 23:40:12 +0000
commitb287e2e27a388deecd9d9580f2a846b2b2efff42 (patch)
treec5745cb1766bfb17731879c0a77be16aa8ba8056
parentc601ff149a91fbadc06a8b0cd86d4dbbd73f84a2 (diff)
downloadbusybox-b287e2e27a388deecd9d9580f2a846b2b2efff42.zip
busybox-b287e2e27a388deecd9d9580f2a846b2b2efff42.tar.gz
Use the new 'select' option to make the shell config
much less evil and far more obvious. -Erik
-rw-r--r--shell/Config.in65
1 files changed, 27 insertions, 38 deletions
diff --git a/shell/Config.in b/shell/Config.in
index 6103ccf..bd6f39f 100644
--- a/shell/Config.in
+++ b/shell/Config.in
@@ -13,15 +13,19 @@ choice
and full featured.
config CONFIG_FEATURE_SH_IS_ASH
+ select CONFIG_ASH
bool "ash"
config CONFIG_FEATURE_SH_IS_HUSH
+ select CONFIG_HUSH
bool "hush"
config CONFIG_FEATURE_SH_IS_LASH
+ select CONFIG_LASH
bool "lash"
config CONFIG_FEATURE_SH_IS_MSH
+ select CONFIG_MSH
bool "msh"
config CONFIG_FEATURE_SH_IS_NONE
@@ -29,20 +33,15 @@ config CONFIG_FEATURE_SH_IS_NONE
endchoice
-if CONFIG_FEATURE_SH_IS_ASH
- config CONFIG_ASH
- default y
-
- comment "ash (forced enabled as default shell)"
-endif
-
-if !CONFIG_FEATURE_SH_IS_ASH
config CONFIG_ASH
bool "ash"
default y
help
- Make sh a link to ash.
-endif
+ Tha 'ash' shell adds about 60k in the default configuration and is
+ the most complete and most pedantically correct shell included with
+ busybox. This shell is actually a derivitive the Debian 'dash' shell
+ (by Herbert Xu), which was created by porting the 'ash' shell
+ (written by Kenneth Almquist) from NetBSD.
comment "Ash Shell Options"
depends on CONFIG_ASH
@@ -98,51 +97,41 @@ config CONFIG_ASH_OPTIMIZE_FOR_SIZE
help
Compile ash for reduced size at price of speed.
-if CONFIG_FEATURE_SH_IS_HUSH
- config CONFIG_HUSH
- default y
-
- comment "hush (forced enabled as default shell)"
-endif
-
-if !CONFIG_FEATURE_SH_IS_HUSH
config CONFIG_HUSH
bool "hush"
default n
help
- Make sh a link to hush.
-endif
+ hush is very small shell (just 18k) and it has fairly complete Bourne
+ shell grammer. It even handles all the normal flow control options
+ such as if/then/elif/else/fi, for/in/do/done, while loops, etc.
-if CONFIG_FEATURE_SH_IS_LASH
- config CONFIG_LASH
- default y
+ It does not handle case/esac, select, function, here documents ( <<
+ word ), arithmetic expansion, aliases, brace expansion, tilde
+ expansion, &> and >& redirection of stdout+stderr, etc.
- comment "lash (forced enabled as default shell)"
-endif
-if !CONFIG_FEATURE_SH_IS_LASH
config CONFIG_LASH
bool "lash"
default n
help
- Make sh a link to lash.
-endif
-
-if CONFIG_FEATURE_SH_IS_MSH
- config CONFIG_MSH
- default y
+ lash is the very smallest shell (adds just 10k) and it is quite
+ usable as a command prompt, but it is not suitable for any but the
+ most trivial scripting (such as an initrd that calls insmod a few
+ times) since it does not understand any Bourne shell grammer. It
+ does handle pipes, redirects, and job control though. Adding in
+ command editing makes it a very nice lightweight command prompt.
- comment "msh (forced enabled as default shell)"
-endif
-if !CONFIG_FEATURE_SH_IS_MSH
config CONFIG_MSH
bool "msh"
default n
help
- Make sh a link to msh.
-endif
-
+ 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.
comment "Bourne Shell Options"
depends on CONFIG_MSH || CONFIG_LASH || CONFIG_HUSH || CONFIG_ASH