aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbb/Config.src4
-rw-r--r--shell/hush.c20
2 files changed, 22 insertions, 2 deletions
diff --git a/libbb/Config.src b/libbb/Config.src
index 9b01757c6..74dc9c549 100644
--- a/libbb/Config.src
+++ b/libbb/Config.src
@@ -78,9 +78,9 @@ config FEATURE_EDITING_HISTORY
config FEATURE_EDITING_SAVEHISTORY
bool "History saving"
default y
- depends on ASH && FEATURE_EDITING
+ depends on FEATURE_EDITING
help
- Enable history saving in ash shell.
+ Enable history saving in shells.
config FEATURE_TAB_COMPLETION
bool "Tab completion"
diff --git a/shell/hush.c b/shell/hush.c
index ce7467245..752efd0c8 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -146,6 +146,13 @@
//config: from stdin just like a shell script from a file.
//config: No prompt, no PS1/PS2 magic shell variables.
//config:
+//config:config HUSH_SAVEHISTORY
+//config: bool "Save command history to .hush_history"
+//config: default y
+//config: depends on HUSH_INTERACTIVE && FEATURE_EDITING_SAVEHISTORY
+//config: help
+//config: Enable history saving in hush.
+//config:
//config:config HUSH_JOB
//config: bool "Job control"
//config: default y
@@ -7415,7 +7422,20 @@ int hush_main(int argc, char **argv)
#if ENABLE_FEATURE_EDITING
G.line_input_state = new_line_input_t(FOR_SHELL);
+# if defined MAX_HISTORY && MAX_HISTORY > 0 && ENABLE_HUSH_SAVEHISTORY
+ {
+ const char *hp = get_local_var_value("HISTFILE");
+ if (!hp) {
+ hp = get_local_var_value("HOME");
+ if (hp) {
+ G.line_input_state->hist_file = concat_path_file(hp, ".hush_history");
+ //set_local_var(xasprintf("HISTFILE=%s", ...));
+ }
+ }
+ }
+# endif
#endif
+
G.global_argc = argc;
G.global_argv = argv;
/* Initialize some more globals to non-zero values */