hush: set default PS1/2 only if we interactive

"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@googlemail.com>
This commit is contained in:
Denys Vlasenko 2019-05-19 15:37:50 +02:00
parent 08fb82c80c
commit 0c36019369

View File

@ -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 */