mirror of
https://git.busybox.net/busybox
synced 2026-02-07 20:50:26 +00:00
shell: empty HISTFILE disables history saving, just as unset one did
The rationale here is that unsetting HISTFILE in /etc/profile does not "stick": if it's unset, the default one is set later (after /etc/profile is executed) by the shell. But setting (and exporting, so it is inherited by all (grand)child shells) an empty one works. function old new delta save_history 296 316 +20 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
9c46a06885
commit
8d3d078917
3 changed files with 6 additions and 4 deletions
|
|
@ -1563,7 +1563,8 @@ void FAST_FUNC save_history(line_input_t *st)
|
|||
{
|
||||
FILE *fp;
|
||||
|
||||
if (!st || !st->hist_file)
|
||||
/* bash compat: HISTFILE="" disables history saving */
|
||||
if (!st || !st->hist_file || !state->hist_file[0])
|
||||
return;
|
||||
if (st->cnt_history <= st->cnt_history_in_file)
|
||||
return; /* no new entries were added */
|
||||
|
|
@ -1617,7 +1618,8 @@ static void save_history(char *str)
|
|||
int fd;
|
||||
int len, len2;
|
||||
|
||||
if (!state->hist_file)
|
||||
/* bash compat: HISTFILE="" disables history saving */
|
||||
if (!state->hist_file || !state->hist_file[0])
|
||||
return;
|
||||
|
||||
fd = open(state->hist_file, O_WRONLY | O_CREAT | O_APPEND, 0600);
|
||||
|
|
|
|||
|
|
@ -14540,7 +14540,7 @@ exitshell(void)
|
|||
/* HISTFILE: "If unset, the command history is not saved when a shell exits." */
|
||||
hp = lookupvar("HISTFILE");
|
||||
line_input_state->hist_file = hp;
|
||||
save_history(line_input_state); /* no-op if hist_file is NULL */
|
||||
save_history(line_input_state); /* no-op if hist_file is NULL or "" */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -2120,7 +2120,7 @@ static void hush_exit(int exitcode)
|
|||
/* HISTFILE: "If unset, the command history is not saved when a shell exits." */
|
||||
hp = get_local_var_value("HISTFILE");
|
||||
G.line_input_state->hist_file = hp;
|
||||
save_history(G.line_input_state); /* no-op if hist_file is NULL */
|
||||
save_history(G.line_input_state); /* no-op if hist_file is NULL or "" */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue