GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un moyen de définir la taille de la liste d'historique dans bash à plus de 5 000 lignes ?

C'est le code réel qui charge l'historique (à partir de bashhist.c vers la ligne 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 les valeurs de HISTSIZE et HISTFILESIZE sont définis, ils seront utilisés.

Readline, la bibliothèque qui gère réellement l'édition des entrées/lignes et l'historique fait offrent des installations pour limiter la taille de la mémoire tampon de l'historique. Cependant, Bash ne place pas de plafond strict là-dessus où des valeurs plus grandes seraient ignorées, du moins que j'ai pu trouver.

Modifier

D'après les commentaires, readline était bien le coupable. Je regardais (un peu bêtement) les paramètres fonctionnels :

il existe une variable appelée history-size qui peut être lue à partir du fichier inputrc. cette variable définit le nombre maximum d'entrées d'historique enregistrées dans la liste d'historique. J'ai vérifié sa valeur dans mon fichier inputrc local pour la trouver égale à 5000. La définir sur une valeur plus grande a résolu le problème.


Votre historique est tronqué la première fois que HISTSIZE est défini, donc s'il est défini sur 5000 plus tôt dans votre ~/.bashrc, ou dans le bashrc à l'échelle du système dans /etc , vous devez les commenter.


Essayez les deux HISTFILESIZE et HISTSIZE .


Linux
  1. Comprendre le point d'exclamation (!) dans Bash ?

  2. Ny Way pour connaître la taille du cache L1, L2, L3 et Ram sous Linux?

  3. UTF-8 d'un bout à l'autre

  4. Imprimer un fichier, en sautant les X premières lignes, dans Bash

  5. Existe-t-il un moyen d'inspecter le rpath actuel sous Linux ?

Rendez l'historique de Bash plus utile avec ces conseils

La liste des raccourcis clavier Bash utiles

Réussissez à sauver la journée avec les commandes d'historique de Bash

Comment définir la couleur de l'invite de commande dans Bash ?

Historique BASH tronqué à 500 lignes à chaque connexion

Exécuter la commande dans bash sans enregistrer dans l'historique