diff options
| -rw-r--r-- | include/applets.src.h | 3 | ||||
| -rw-r--r-- | include/usage.src.h | 7 | ||||
| -rw-r--r-- | shell/Config.src | 114 | ||||
| -rw-r--r-- | shell/Kbuild.src | 3 | ||||
| -rw-r--r-- | shell/ash.c | 117 | ||||
| -rw-r--r-- | shell/hush.c | 2 | 
6 files changed, 126 insertions, 120 deletions
diff --git a/include/applets.src.h b/include/applets.src.h index 5d84597b0..6ca0c3230 100644 --- a/include/applets.src.h +++ b/include/applets.src.h @@ -72,10 +72,8 @@ IF_ADJTIMEX(APPLET(adjtimex, _BB_DIR_SBIN, _BB_SUID_DROP))  IF_AR(APPLET(ar, _BB_DIR_USR_BIN, _BB_SUID_DROP))  IF_ARP(APPLET(arp, _BB_DIR_SBIN, _BB_SUID_DROP))  IF_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_DROP)) -IF_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_DROP))  IF_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_DROP, awk))  IF_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_DROP, basename)) -IF_FEATURE_BASH_IS_ASH(APPLET_ODDNAME(bash, ash, _BB_DIR_BIN, _BB_SUID_DROP, bash))  IF_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_DROP))  //IF_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_DROP))  IF_BEEP(APPLET(beep, _BB_DIR_USR_BIN, _BB_SUID_DROP)) @@ -344,7 +342,6 @@ IF_SETLOGCONS(APPLET(setlogcons, _BB_DIR_USR_SBIN, _BB_SUID_DROP))  IF_SETSEBOOL(APPLET(setsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP))  IF_SETSID(APPLET(setsid, _BB_DIR_USR_BIN, _BB_SUID_DROP))  IF_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, setuidgid)) -IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, _BB_DIR_BIN, _BB_SUID_DROP, sh))  IF_SHA1SUM(APPLET_ODDNAME(sha1sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha1sum))  IF_SHA256SUM(APPLET_ODDNAME(sha256sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha256sum))  IF_SHA512SUM(APPLET_ODDNAME(sha512sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha512sum)) diff --git a/include/usage.src.h b/include/usage.src.h index b3396006f..46d64c135 100644 --- a/include/usage.src.h +++ b/include/usage.src.h @@ -115,13 +115,6 @@ INSERT       "\n	-s SRC_IP	Sender IP address" \       "\n	DST_IP		Target IP address" \ -#define sh_trivial_usage NOUSAGE_STR -#define sh_full_usage "" -#define ash_trivial_usage NOUSAGE_STR -#define ash_full_usage "" -#define bash_trivial_usage NOUSAGE_STR -#define bash_full_usage "" -  #define awk_trivial_usage \         "[OPTIONS] [AWK_PROGRAM] [FILE]..."  #define awk_full_usage "\n\n" \ diff --git a/shell/Config.src b/shell/Config.src index f415a5fa6..6389d943a 100644 --- a/shell/Config.src +++ b/shell/Config.src @@ -7,109 +7,6 @@ menu "Shells"  INSERT -config ASH -	bool "ash" -	default y -	depends on !NOMMU -	help -	  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 derivative of the Debian 'dash' -	  shell (by Herbert Xu), which was created by porting the 'ash' shell -	  (written by Kenneth Almquist) from NetBSD. - -config ASH_BASH_COMPAT -	bool "bash-compatible extensions" -	default y -	depends on ASH -	help -	  Enable bash-compatible extensions. - -config ASH_JOB_CONTROL -	bool "Job control" -	default y -	depends on ASH -	help -	  Enable job control in the ash shell. - -config ASH_ALIAS -	bool "alias support" -	default y -	depends on ASH -	help -	  Enable alias support in the ash shell. - -config ASH_GETOPTS -	bool "Builtin getopt to parse positional parameters" -	default y -	depends on ASH -	help -	  Enable getopts builtin in the ash shell. - -config ASH_BUILTIN_ECHO -	bool "Builtin version of 'echo'" -	default y -	depends on ASH -	help -	  Enable support for echo, builtin to ash. - -config ASH_BUILTIN_PRINTF -	bool "Builtin version of 'printf'" -	default y -	depends on ASH -	help -	  Enable support for printf, builtin to ash. - -config ASH_BUILTIN_TEST -	bool "Builtin version of 'test'" -	default y -	depends on ASH -	help -	  Enable support for test, builtin to ash. - -config ASH_CMDCMD -	bool "'command' command to override shell builtins" -	default y -	depends on ASH -	help -	  Enable support for the ash 'command' builtin, which allows -	  you to run the specified command with the specified arguments, -	  even when there is an ash builtin command with the same name. - -config ASH_MAIL -	bool "Check for new mail on interactive shells" -	default n -	depends on ASH -	help -	  Enable "check for new mail" in the ash shell. - -config ASH_OPTIMIZE_FOR_SIZE -	bool "Optimize for size instead of speed" -	default y -	depends on ASH -	help -	  Compile ash for reduced size at the price of speed. - -config ASH_RANDOM_SUPPORT -	bool "Pseudorandom generator and $RANDOM variable" -	default y -	depends on ASH -	help -	  Enable pseudorandom generator and dynamic variable "$RANDOM". -	  Each read of "$RANDOM" will generate a new pseudorandom value. -	  You can reset the generator by using a specified start value. -	  After "unset RANDOM" the generator will switch off and this -	  variable will no longer have special treatment. - -config ASH_EXPAND_PRMT -	bool "Expand prompt string" -	default y -	depends on ASH -	help -	  "PS#" may contain volatile content, such as backquote commands. -	  This option recreates the prompt string from the environment -	  variable each time it is displayed. -  choice  	prompt "Choose which shell is aliased to 'sh' name" @@ -284,12 +181,17 @@ config CTTYHACK  	  ::respawn:/bin/cttyhack /bin/sh +	  Starting an interactive shell from boot shell script: + +	  setsid cttyhack sh +  	  Giving controlling tty to shell running with PID 1: -	  $ exec cttyhack sh +	  # exec cttyhack sh -	  Starting an interactive shell from boot shell script: +	  Without cttyhack, you need to know exact tty name, +	  and do something like this: -	  setsid cttyhack sh +	  # exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'  endmenu diff --git a/shell/Kbuild.src b/shell/Kbuild.src index c7eb5b61a..bce99240f 100644 --- a/shell/Kbuild.src +++ b/shell/Kbuild.src @@ -8,8 +8,5 @@ lib-y:=  INSERT -lib-$(CONFIG_ASH)      += ash.o ash_ptr_hack.o shell_common.o  lib-$(CONFIG_CTTYHACK) += cttyhack.o -  lib-$(CONFIG_SH_MATH_SUPPORT) += math.o -lib-$(CONFIG_ASH_RANDOM_SUPPORT) += random.o diff --git a/shell/ash.c b/shell/ash.c index 0337a5535..9b33e78ec 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -70,6 +70,123 @@  # error "Do not even bother, ash will not run on NOMMU machine"  #endif +//applet:IF_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_DROP)) +//applet:IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, _BB_DIR_BIN, _BB_SUID_DROP, sh)) +//applet:IF_FEATURE_BASH_IS_ASH(APPLET_ODDNAME(bash, ash, _BB_DIR_BIN, _BB_SUID_DROP, bash)) + +//kbuild:lib-$(CONFIG_ASH)      += ash.o ash_ptr_hack.o shell_common.o +//kbuild:lib-$(CONFIG_ASH_RANDOM_SUPPORT) += random.o + +//config:config ASH +//config:	bool "ash" +//config:	default y +//config:	depends on !NOMMU +//config:	help +//config:	  Tha 'ash' shell adds about 60k in the default configuration and is +//config:	  the most complete and most pedantically correct shell included with +//config:	  busybox. This shell is actually a derivative of the Debian 'dash' +//config:	  shell (by Herbert Xu), which was created by porting the 'ash' shell +//config:	  (written by Kenneth Almquist) from NetBSD. +//config: +//config:config ASH_BASH_COMPAT +//config:	bool "bash-compatible extensions" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable bash-compatible extensions. +//config: +//config:config ASH_JOB_CONTROL +//config:	bool "Job control" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable job control in the ash shell. +//config: +//config:config ASH_ALIAS +//config:	bool "alias support" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable alias support in the ash shell. +//config: +//config:config ASH_GETOPTS +//config:	bool "Builtin getopt to parse positional parameters" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable getopts builtin in the ash shell. +//config: +//config:config ASH_BUILTIN_ECHO +//config:	bool "Builtin version of 'echo'" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable support for echo, builtin to ash. +//config: +//config:config ASH_BUILTIN_PRINTF +//config:	bool "Builtin version of 'printf'" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable support for printf, builtin to ash. +//config: +//config:config ASH_BUILTIN_TEST +//config:	bool "Builtin version of 'test'" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable support for test, builtin to ash. +//config: +//config:config ASH_CMDCMD +//config:	bool "'command' command to override shell builtins" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable support for the ash 'command' builtin, which allows +//config:	  you to run the specified command with the specified arguments, +//config:	  even when there is an ash builtin command with the same name. +//config: +//config:config ASH_MAIL +//config:	bool "Check for new mail on interactive shells" +//config:	default n +//config:	depends on ASH +//config:	help +//config:	  Enable "check for new mail" in the ash shell. +//config: +//config:config ASH_OPTIMIZE_FOR_SIZE +//config:	bool "Optimize for size instead of speed" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Compile ash for reduced size at the price of speed. +//config: +//config:config ASH_RANDOM_SUPPORT +//config:	bool "Pseudorandom generator and $RANDOM variable" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  Enable pseudorandom generator and dynamic variable "$RANDOM". +//config:	  Each read of "$RANDOM" will generate a new pseudorandom value. +//config:	  You can reset the generator by using a specified start value. +//config:	  After "unset RANDOM" the generator will switch off and this +//config:	  variable will no longer have special treatment. +//config: +//config:config ASH_EXPAND_PRMT +//config:	bool "Expand prompt string" +//config:	default y +//config:	depends on ASH +//config:	help +//config:	  "PS#" may contain volatile content, such as backquote commands. +//config:	  This option recreates the prompt string from the environment +//config:	  variable each time it is displayed. + +//usage:#define ash_trivial_usage NOUSAGE_STR +//usage:#define ash_full_usage "" +//usage:#define sh_trivial_usage NOUSAGE_STR +//usage:#define sh_full_usage "" +//usage:#define bash_trivial_usage NOUSAGE_STR +//usage:#define bash_full_usage "" +  /* ============ Hash table sizes. Configurable. */ diff --git a/shell/hush.c b/shell/hush.c index c5a8ea617..56a3f4b14 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -114,7 +114,7 @@  //config:	bool "hush"  //config:	default y  //config:	help -//config:	  hush is a small shell (22k). It handles the normal flow control +//config:	  hush is a small shell (25k). It handles the normal flow control  //config:	  constructs such as if/then/elif/else/fi, for/in/do/done, while loops,  //config:	  case/esac. Redirections, here documents, $((arithmetic))  //config:	  and functions are supported.  | 
