GNU/Linux >> Linux Esercitazione >  >> Linux

C'è un modo per impostare la dimensione dell'elenco cronologico in bash su più di 5000 righe?

Questo è il codice effettivo che carica la cronologia (da bashhist.c intorno alla riga 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 ();
    }
}

Se i valori di HISTSIZE e HISTFILESIZE sono impostati, verranno utilizzati.

Readline, la libreria che attualmente gestisce l'input/l'editing di riga e la cronologia lo fa offrire servizi per mettere un limite a quanto può crescere il buffer storico. Tuttavia, Bash non pone un tetto rigido su questo dove i valori più grandi verrebbero ignorati, almeno quello che sono riuscito a trovare.

Modifica

Dai commenti, readline era davvero il colpevole. Stavo guardando (piuttosto stupidamente) i parametri funzionali:

c'è una variabile chiamata history-size che può essere letta dal file inputrc. quella variabile imposta il numero massimo di voci della cronologia salvate nell'elenco della cronologia. Ho controllato il suo valore nel mio file inputrc locale per trovarlo uguale a 5000. L'impostazione su un valore maggiore ha risolto il problema.


La tua cronologia viene troncata la prima volta che viene impostato HISTSIZE, quindi se è stato impostato su 5000 in precedenza nel tuo ~/.bashrc, o nel bashrc a livello di sistema in /etc , devi commentarli.


Prova entrambi HISTFILESIZE e HISTSIZE .


Linux
  1. Rendi la cronologia di Bash più utile con questi suggerimenti

  2. Il Bash '?

  3. Qual è il modo per conoscere le dimensioni della cache L1, L2, L3 e della RAM in Linux?

  4. C'è un modo per ispezionare l'attuale rpath su Linux?

  5. Come elencare la dimensione di ogni file e directory e ordinare per dimensione decrescente in Bash?

L'elenco delle scorciatoie da tastiera utili di Bash

Salva la giornata con successo con i comandi della cronologia di Bash

In bash, c'è un modo per echo/stampare l'ultimo stdout? Esiste una variabile a cui è assegnato stdout?

Cronologia BASH troncata a 500 righe a ogni accesso

Qual è il modo migliore per imparare SELinux?

Esegui il comando in bash senza salvare nella cronologia