GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna manera de establecer el tamaño de la lista de historial en bash en más de 5000 líneas?

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 .


Linux
  1. Consejos de Bash para el día a día en la línea de comandos

  2. ¿Cómo acceder al historial sobre la marcha en Unix?

  3. ¿Alguna forma de saber el tamaño de L1, L2, L3 Cache y RAM en Linux?

  4. UTF-8 hasta el final

  5. ¿Hay alguna manera de inspeccionar el rpath actual en Linux?

La lista de atajos de teclado Bash útiles

Salve el día con éxito con los comandos del historial de Bash

Imprima un archivo, omitiendo las primeras líneas X, en Bash

Historial de BASH truncado a 500 líneas en cada inicio de sesión

¿Cuál es la mejor manera de aprender SELinux?

Ejecutar comando en bash sin guardar en el historial