GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak nastavit velikost seznamu historie v bash na více než 5000 řádků?

Toto je skutečný kód, který načte historii (od bashhist.c kolem řádku 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 ();
    }
}

Pokud jsou hodnoty HISTSIZE a HISTFILESIZE jsou nastaveny, budou použity.

Readline, knihovna, která ve skutečnosti zpracovává vstup / editaci řádku a historii, dělá nabídnout zařízení, která omezí, jak velká může vyrovnávací paměť historie narůst. Bash tomu však neklade pevný strop, kde by byly ignorovány větší hodnoty, alespoň to jsem našel.

Upravit

Z komentářů, readline byl skutečně viníkem. Díval jsem se (spíše bláhově) na funkční parametry:

existuje proměnná s názvem history-size, kterou lze číst ze souboru inputrc. tato proměnná nastavuje maximální počet záznamů historie uložených v seznamu historie. Zkontroloval jsem její hodnotu v místním souboru inputrc a zjistil jsem, že se rovná 5000. Nastavením na vyšší hodnotu se problém vyřešil.


Vaše historie je při prvním nastavení HISTSIZE zkrácena, takže pokud je nastavena na 5000 dříve ve vašem ~/.bashrc, nebo v systémovém bashrc v /etc , musíte je okomentovat.


Zkuste obě HISTFILESIZE a HISTSIZE .


Linux
  1. UTF-8 celou cestu

  2. Vytiskněte soubor s vynecháním prvních X řádků v Bash

  3. Jak vypsat velikost každého souboru a adresáře a seřadit podle sestupné velikosti v Bash?

  1. Bash tipy pro každý den na příkazovém řádku

  2. Jaký je nejlepší způsob, jak se naučit SELinux?

  3. Existuje způsob, jak vypsat všechny konfigurovatelné `alternativy` (symlinky pro podobné příkazy) v systému?

  1. Rozumíte vykřičníku (!) v Bash?

  2. Jaký způsob, jak zjistit velikost mezipaměti L1, L2, L3 a RAM v Linuxu?

  3. Existuje způsob, jak zkontrolovat aktuální rpath v Linuxu?