Este es el código real que carga el historial (desde bashhist.c
alrededor de la línea 260):
/* Load the history list from the history file. */
void
load_history ()
{
char *hf;
/* Truncate history file for interactive shells which desire it.
Note that the history file is automatically truncated to the
size of HISTSIZE if the user does not explicitly set the size
differently. */
set_if_not ("HISTSIZE", "500");
sv_histsize ("HISTSIZE");
set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE"));
sv_histsize ("HISTFILESIZE");
/* Read the history in HISTFILE into the history list. */
hf = get_string_value ("HISTFILE");
if (hf && *hf && file_exists (hf))
{
read_history (hf);
using_history ();
history_lines_in_file = where_history ();
}
}
Si los valores de HISTSIZE
y HISTFILESIZE
están configurados, se utilizarán.
Readline, la biblioteca que realmente maneja la edición de entradas/líneas y el historial lo hace ofrecer facilidades para poner un tope a lo grande que puede crecer el búfer de historial. Sin embargo, Bash no establece un límite máximo en esto donde los valores más grandes serían ignorados, al menos eso pude encontrar.
Editar
De los comentarios, readline
efectivamente fue el culpable. Estaba mirando (bastante tontamente) parámetros funcionales:
hay una variable llamada history-size que se puede leer desde el archivo inputrc. esa variable establece el número máximo de entradas de historial guardadas en la lista de historial. Verifiqué su valor en mi archivo inputrc local para encontrarlo igual a 5000. Establecerlo en un valor mayor resolvió el problema.
Su historial se trunca la primera vez que se establece HISTSIZE, por lo que si se establece en 5000 antes en su ~/.bashrc, o en el bashrc de todo el sistema en /etc , debe comentarlos.
Prueba ambos HISTFILESIZE
y HISTSIZE
.