56 votes

Comment obtenir l'historique infini des commandes en bash ?

J'ai mis export HISTSIZE=99999999999999 mais est-ce le meilleur moyen ? Je ne sais pas si un débordement pourrait se produire. Je cherche un moyen testé et fiable de supprimer les limites de l'historique des commandes.

73voto

C'est en effet no (bien) documenté et je pense que 99% des utilisateurs de Bash sur ce plan mettent HISTSIZE à un nombre très grand.

Dans le GNU bash, l'historique est géré par la puissante bibliothèque readline. La bibliothèque a la possibilité de limiter la taille de l'historique ("étouffer" dans le jargon de readline) ou non et bash définit simplement l'historique readline sur étouffé/non étouffé. Si vous regardez par exemple dans GNU bash version 4.2, fichier variables.c, ligne 4443, fonction void sv_histsize (char*) vous trouverez ce commentaire (et l'ensemble de l'étouffement/non étouffement dans la fonction qui suit) :

/* Ce qu'il faut faire après le changement des variables HISTSIZE ou HISTFILESIZE.
S'il existe une valeur pour cette HISTSIZE (et qu'elle est numérique), alors étouffer l'historique. Sinon, s'il n'y a PAS de valeur pour cette variable,
désamorcer l'histoire. Si le nom est HISTFILESIZE, et sa valeur est
numérique, le fichier historique est tronqué pour ne pas contenir plus que ce nombre.
lignes. */

Cela devrait donc faire l'affaire :

export HISTSIZE=""

Et aussi ceci (si vous vous sentez défiant) :

export HISTSIZE="GOTCHA"

J'espère que cela vous aidera.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X