[git commit] hush: set default PS1/2 only if we interactive

Denys Vlasenko vda.linux at googlemail.com
Sun May 19 13:39:32 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=0c3601936915d3d625683388c62c561de96a47da
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

"env - hush SCRIPT" invocation (that is, with empty environment)
should not show PS1/2 in "set" output.

function                                             old     new   delta
hush_main                                           1070    1075      +5

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/hush.c | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/shell/hush.c b/shell/hush.c
index 629b7ff92..2b9abbdfd 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -9888,14 +9888,6 @@ int hush_main(int argc, char **argv)
 	/* Export PWD */
 	set_pwd_var(SETFLAG_EXPORT);
 
-#if ENABLE_HUSH_INTERACTIVE && ENABLE_FEATURE_EDITING_FANCY_PROMPT
-	/* Set (but not export) PS1/2 unless already set */
-	if (!get_local_var_value("PS1"))
-		set_local_var_from_halves("PS1", "\\w \\$ ");
-	if (!get_local_var_value("PS2"))
-		set_local_var_from_halves("PS2", "> ");
-#endif
-
 #if BASH_HOSTNAME_VAR
 	/* Set (but not export) HOSTNAME unless already set */
 	if (!get_local_var_value("HOSTNAME")) {
@@ -9907,6 +9899,8 @@ int hush_main(int argc, char **argv)
 	/* IFS is not inherited from the parent environment */
 	set_local_var_from_halves("IFS", defifs);
 
+	/* PS1/PS2 are set later, if we determine that we are interactive */
+
 	/* bash also exports SHLVL and _,
 	 * and sets (but doesn't export) the following variables:
 	 * BASH=/bin/bash
@@ -10278,14 +10272,23 @@ int hush_main(int argc, char **argv)
 	 * (--norc turns this off, --rcfile <file> overrides)
 	 */
 
-	if (!ENABLE_FEATURE_SH_EXTRA_QUIET && G_interactive_fd) {
-		/* note: ash and hush share this string */
-		printf("\n\n%s %s\n"
-			IF_HUSH_HELP("Enter 'help' for a list of built-in commands.\n")
-			"\n",
-			bb_banner,
-			"hush - the humble shell"
-		);
+	if (G_interactive_fd) {
+#if ENABLE_HUSH_INTERACTIVE && ENABLE_FEATURE_EDITING_FANCY_PROMPT
+		/* Set (but not export) PS1/2 unless already set */
+		if (!get_local_var_value("PS1"))
+			set_local_var_from_halves("PS1", "\\w \\$ ");
+		if (!get_local_var_value("PS2"))
+			set_local_var_from_halves("PS2", "> ");
+#endif
+		if (!ENABLE_FEATURE_SH_EXTRA_QUIET) {
+			/* note: ash and hush share this string */
+			printf("\n\n%s %s\n"
+				IF_HUSH_HELP("Enter 'help' for a list of built-in commands.\n")
+				"\n",
+				bb_banner,
+				"hush - the humble shell"
+			);
+		}
 	}
 
 	parse_and_run_file(hfopen(NULL)); /* stdin */


More information about the busybox-cvs mailing list