The command shell situation is a big mess. We have three or four different
shells that don't really share any code, and the "standalone shell" doesn't
work all that well (especially not in a chroot environment), due to apps not
- being reentrant. I'm writing a new shell (bbsh) to unify the various
- shells and configurably add the minimal set of bash features people
- actually use. The hardest part is it has to configure down as small as
- lash while providing lash's features. The rest is easy in comparison.
- bzip2
- Compression-side support.
+ being reentrant.
+ lash is phased out. hush can be configured down to be nearly as small,
+ but less buggy :)
init
General cleanup (should use ENABLE_FEATURE_INIT_SYSLOG and ENABLE_FEATURE_INIT_DEBUG).
depmod
use of the depmod.pl (perl is to bloated for most embedded setups) and or orig
modutils. The orig depmod is rather pointless to have to add to a firmware image
in when we already have a insmod/rmmod and friends.
- Unify base64 handling.
- [done]
Do a SUSv3 audit
Look at the full Single Unix Specification version 3 (available online at
"http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and
USE_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, setuidgid))
USE_FEATURE_SH_IS_ASH(APPLET_NOUSAGE(sh, ash, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_FEATURE_SH_IS_HUSH(APPLET_NOUSAGE(sh, hush, _BB_DIR_BIN, _BB_SUID_NEVER))
-USE_FEATURE_SH_IS_LASH(APPLET_NOUSAGE(sh, lash, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_FEATURE_SH_IS_MSH(APPLET_NOUSAGE(sh, msh, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_SHA1SUM(APPLET_ODDNAME(sha1sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_NEVER, sha1sum))
USE_SLATTACH(APPLET(slattach, _BB_DIR_SBIN, _BB_SUID_NEVER))
"[FILE]...\n" \
"or: sh -c command [args]..."
#define lash_full_usage \
- "The BusyBox LAme SHell (command interpreter)"
-#define lash_notes_usage \
- "This command does not yet have proper documentation.\n\n" \
- "Use lash just as you would use any other shell. It properly handles pipes,\n" \
- "redirects, job control, can be used as the shell for scripts, and has a\n" \
- "sufficient set of builtins to do what is needed. It does not (yet) support\n" \
- "Bourne Shell syntax. If you need things like \"if-then-else\", \"while\", and such\n" \
- "use ash or bash. If you just need a very simple and extremely small shell,\n" \
- "this will do the job."
+ "lash is deprecated, please use hush"
#define last_trivial_usage \
""
select HUSH
bool "hush"
-config FEATURE_SH_IS_LASH
- select LASH
- bool "lash"
+####config FEATURE_SH_IS_LASH
+#### select LASH
+#### bool "lash"
config FEATURE_SH_IS_MSH
select MSH
config LASH
bool "lash"
default n
- select TRUE
- select FALSE
- select TEST
+ select HUSH
help
- 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 grammar. It
- does handle pipes, redirects, and job control though. Adding in
- command editing makes it a very nice lightweight command prompt.
+ lash is deprecated and will be removed, please migrate to hush.
config MSH
lib-y:=
lib-$(CONFIG_ASH) += ash.o
lib-$(CONFIG_HUSH) += hush.o
-lib-$(CONFIG_LASH) += lash.o
lib-$(CONFIG_MSH) += msh.o
lib-$(CONFIG_CTTYHACK) += cttyhack.o
#endif
hush_exit(opt ? opt : last_return_code);
}
+
+
+#if ENABLE_LASH
+int lash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int lash_main(int argc, char **argv)
+{
+ //bb_error_msg("lash is deprecated, please use hush instead");
+ return hush_main(argc, argv);
+}
+#endif