Comment obtenir l'historique des commandes infinies dans bash?

54

Je mets export HISTSIZE=99999999999999mais est-ce la meilleure façon? Je ne sais pas si un débordement pourrait se produire. Je recherche un moyen testé et fiable de supprimer les limites de l'historique des commandes.

utilisateur55542
la source
à ma connaissance, il n'y a pas de mécanisme intégré pour faire cela.
Je ne fais que faire des commentaires pour que, lorsque cela sera résolu, je le sache aussi !!
2
debian-administration.org/articles/543 pourrait être une meilleure réponse. Au moins, il gère des valeurs d'infini plus grandes que la solution sur superutilisateur. :-)
Vous pourriez probablement réduire ce nombre à 9999 en pratique (ou même à 999; j'en utilise 1 000). Je n'ai jamais trouvé une histoire plus grande qu'environ 1000 pour être utile. Si je veux récupérer une commande pour en faire un script, je le fais normalement dans un millier de commandes. Sinon, ça peut aller et il n'y a pas de mal à faire.
Jonathan Leffler
@ JonathanLeffler: La mienne compte 1 300 lignes et elle est aussi petite que possible. Ctrl-R est très utile.
l0b0

Réponses:

69

en effet, il n’est pas (bien) documenté et je suppose que 99% des utilisateurs de bash sur ce système planifié définissent HISTSIZE sur un très grand nombre.

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

/ * Que faire après le changement des variables HISTSIZE ou HISTFILESIZE.
S'il existe une valeur pour cet HISTSIZE (et qu'il est numérique), étouffez l'historique. Sinon, s'il n'y a pas de valeur pour cette variable,
désélectionnez l'historique. Si name est HISTFILESIZE et que sa valeur est
numérique, tronquez le fichier d'historique pour qu'il ne contienne pas plus de
lignes. * /

Donc, cela devrait faire l'affaire:

export HISTSIZE=""

Et aussi ceci (si vous vous sentez provocant):

export HISTSIZE="GOTCHA"

J'espère que cela t'aides.


la source
2
Que les Tux te bénissent :)
dimanche
17
Je suggère: export HISTSIZE = "INFINITE"
AmanicA