Which of the bash-compatible extensions are supported in ash and hush
are now listed.

Also be precise about which of the builtins will be enabled in each
option.

(By the way, I didn't yet have an idea about what ash's "monitor"
(set -m) option will do when job control is disabled at build time.)

Signed-off-by: Kang-Che Sung <explore...@gmail.com>
---
 shell/ash.c  | 30 +++++++++++++++++++++---------
 shell/hush.c | 15 ++++++++++++++-
 2 files changed, 35 insertions(+), 10 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 9c46a93e0..272682d78 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -72,7 +72,18 @@
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable bash-compatible extensions.
+//config:  Enable bash-compatible extensions, which currently include:
+//config:  - 'source' builtin
+//config:  - '[[' builtin (if 'test' builtin is also enabled)
+//config:  - 'function' keyword
+//config:  - pipefail option ('set -o pipefail')
+//config:  - $'...' expansion
+//config:  - ${var:position:length} expansion
+//config:  - ${var/pattern/replacement} expansion
+//config:  - ${var//pattern/replacement} expansion
+//config:  - $HOSTNAME variable
+//config:  - $SHLVL variable
+//config:  - '&>' redirection ('&>file' equivalent to '>file 2>&1')
 //config:
 //config:config ASH_IDLE_TIMEOUT
 //config: bool "Idle timeout variable"
@@ -87,48 +98,49 @@
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
 //config:  Enable job control in the ash shell.
+//config:  Enable these builtins: bg, fg, jobs, kill
 //config:
 //config:config ASH_ALIAS
 //config: bool "Alias support"
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable alias support in the ash shell.
+//config:  Enable support for 'alias' and 'unalias' builtins in ash.
 //config:
 //config:config ASH_GETOPTS
 //config: bool "Builtin getopt to parse positional parameters"
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable support for getopts builtin in ash.
+//config:  Enable support for 'getopts' builtin in ash.
 //config:
 //config:config ASH_BUILTIN_ECHO
 //config: bool "Builtin version of 'echo'"
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable support for echo builtin in ash.
+//config:  Enable support for 'echo' builtin in ash.
 //config:
 //config:config ASH_BUILTIN_PRINTF
 //config: bool "Builtin version of 'printf'"
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable support for printf builtin in ash.
+//config:  Enable support for 'printf' builtin in ash.
 //config:
 //config:config ASH_BUILTIN_TEST
-//config: bool "Builtin version of 'test'"
+//config: bool "Builtin version of 'test' and '['"
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable support for test builtin in ash.
+//config:  Enable support for 'test' and '[' builtins in ash.
 //config:
 //config:config ASH_HELP
 //config: bool "help builtin"
 //config: default y
 //config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config: help
-//config:  Enable help builtin in ash.
+//config:  Enable 'help' builtin in ash.
 //config:
 //config:config ASH_CMDCMD
 //config: bool "'command' command to override shell builtins"
@@ -3943,7 +3955,7 @@ fg_bgcmd(int argc UNUSED_PARAM, char **argv)
  } while (*argv && *++argv);
  return retval;
 }
-#endif
+#endif /* JOBS */

 static int
 sprint_status48(char *s, int status, int sigonly)
diff --git a/shell/hush.c b/shell/hush.c
index 5c5715b3f..fe9444181 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -100,7 +100,17 @@
 //config: default y
 //config: depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
 //config: help
-//config:  Enable bash-compatible extensions.
+//config:  Enable bash-compatible extensions, which currently include:
+//config:  - 'source' builtin
+//config:  - '[[' builtin ('test' and '[' builtin are always enabled
+//config:    regardless)
+//config:  - ${var:position:length} expansion (if math support is also
+//config:    enabled)
+//config:  - ${var/pattern/replacement} expansion
+//config:  - ${var//pattern/replacement} expansion
+//config:  - $HOSTNAME variable
+//config:  Brace expansion is available as a separate config option
+//config:  (HUSH_BRACE_EXPANSION).
 //config:
 //config:config HUSH_BRACE_EXPANSION
 //config: bool "Brace expansion"
@@ -136,6 +146,9 @@
 //config:  "cmd &" still works by simply spawning a process and immediately
 //config:  prompting for next command (or executing next command in a script),
 //config:  but no separate process group is formed.
+//config:
+//config:  Note: It is not yet able to disable job control at runtime
+//config:  ("set +m" won't work).
 //config:
 //config:config HUSH_TICK
 //config: bool "Process substitution"
-- 
2.11.0
From d8e95f8f23653259eb2b09fc91cf79f2f122deb5 Mon Sep 17 00:00:00 2001
From: Kang-Che Sung <explore...@gmail.com>
Date: Mon, 9 Jan 2017 22:38:14 +0800
Subject: [PATCH 2/2] Document ash and hush config options in more detail.

Which of the bash-compatible extensions are supported in ash and hush
are now listed.

Also be precise about which of the builtins will be enabled in each
option.

(By the way, I didn't yet have an idea about what ash's "monitor"
(set -m) option will do when job control is disabled at build time.)

Signed-off-by: Kang-Che Sung <explore...@gmail.com>
---
 shell/ash.c  | 30 +++++++++++++++++++++---------
 shell/hush.c | 15 ++++++++++++++-
 2 files changed, 35 insertions(+), 10 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 9c46a93e0..272682d78 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -72,7 +72,18 @@
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable bash-compatible extensions.
+//config:	  Enable bash-compatible extensions, which currently include:
+//config:	  - 'source' builtin
+//config:	  - '[[' builtin (if 'test' builtin is also enabled)
+//config:	  - 'function' keyword
+//config:	  - pipefail option ('set -o pipefail')
+//config:	  - $'...' expansion
+//config:	  - ${var:position:length} expansion
+//config:	  - ${var/pattern/replacement} expansion
+//config:	  - ${var//pattern/replacement} expansion
+//config:	  - $HOSTNAME variable
+//config:	  - $SHLVL variable
+//config:	  - '&>' redirection ('&>file' equivalent to '>file 2>&1')
 //config:
 //config:config ASH_IDLE_TIMEOUT
 //config:	bool "Idle timeout variable"
@@ -87,48 +98,49 @@
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
 //config:	  Enable job control in the ash shell.
+//config:	  Enable these builtins: bg, fg, jobs, kill
 //config:
 //config:config ASH_ALIAS
 //config:	bool "Alias support"
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable alias support in the ash shell.
+//config:	  Enable support for 'alias' and 'unalias' builtins in ash.
 //config:
 //config:config ASH_GETOPTS
 //config:	bool "Builtin getopt to parse positional parameters"
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable support for getopts builtin in ash.
+//config:	  Enable support for 'getopts' builtin in ash.
 //config:
 //config:config ASH_BUILTIN_ECHO
 //config:	bool "Builtin version of 'echo'"
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable support for echo builtin in ash.
+//config:	  Enable support for 'echo' builtin in ash.
 //config:
 //config:config ASH_BUILTIN_PRINTF
 //config:	bool "Builtin version of 'printf'"
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable support for printf builtin in ash.
+//config:	  Enable support for 'printf' builtin in ash.
 //config:
 //config:config ASH_BUILTIN_TEST
-//config:	bool "Builtin version of 'test'"
+//config:	bool "Builtin version of 'test' and '['"
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable support for test builtin in ash.
+//config:	  Enable support for 'test' and '[' builtins in ash.
 //config:
 //config:config ASH_HELP
 //config:	bool "help builtin"
 //config:	default y
 //config:	depends on ASH || SH_IS_ASH || BASH_IS_ASH
 //config:	help
-//config:	  Enable help builtin in ash.
+//config:	  Enable 'help' builtin in ash.
 //config:
 //config:config ASH_CMDCMD
 //config:	bool "'command' command to override shell builtins"
@@ -3943,7 +3955,7 @@ fg_bgcmd(int argc UNUSED_PARAM, char **argv)
 	} while (*argv && *++argv);
 	return retval;
 }
-#endif
+#endif /* JOBS */
 
 static int
 sprint_status48(char *s, int status, int sigonly)
diff --git a/shell/hush.c b/shell/hush.c
index 5c5715b3f..fe9444181 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -100,7 +100,17 @@
 //config:	default y
 //config:	depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
 //config:	help
-//config:	  Enable bash-compatible extensions.
+//config:	  Enable bash-compatible extensions, which currently include:
+//config:	  - 'source' builtin
+//config:	  - '[[' builtin ('test' and '[' builtin are always enabled
+//config:	    regardless)
+//config:	  - ${var:position:length} expansion (if math support is also
+//config:	    enabled)
+//config:	  - ${var/pattern/replacement} expansion
+//config:	  - ${var//pattern/replacement} expansion
+//config:	  - $HOSTNAME variable
+//config:	  Brace expansion is available as a separate config option
+//config:	  (HUSH_BRACE_EXPANSION).
 //config:
 //config:config HUSH_BRACE_EXPANSION
 //config:	bool "Brace expansion"
@@ -136,6 +146,9 @@
 //config:	  "cmd &" still works by simply spawning a process and immediately
 //config:	  prompting for next command (or executing next command in a script),
 //config:	  but no separate process group is formed.
+//config:	  
+//config:	  Note: It is not yet able to disable job control at runtime
+//config:	  ("set +m" won't work).
 //config:
 //config:config HUSH_TICK
 //config:	bool "Process substitution"
-- 
2.11.0

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to