Comment définir le nombre de rappels d'historique de commandes

15

J'utilise bash. Pour parcourir l'historique de mes commandes, j'appelle la historycommande qui, je crois, appelle le programme Gnu du même nom. (Je ne sais pas s'il existe une meilleure méthode spécifique à bash).

Dans mon .bashrc, j'ai actuellement une ligne export PROMPT_COMMAND='history -a'pour conserver l'historique de mes multiples sessions bash que j'exécute.

Si je fais l'histoire, je ne vois actuellement que 524 entrées. Est-ce configurable? Je voudrais porter ce chiffre à un nombre beaucoup plus élevé, disons 2000.

Gilles
la source

Réponses:

19

Tout d'abord, history c'est la méthode spécifique à bash, rien de mieux. La historycommande est une commande bash intégrée, comme vous pouvez le voir en exécutant

$ type history 
history is a shell builtin

Maintenant, le nombre de commandes dont il se souvient est contrôlé par la HISTSIZEvariable. Pour le régler sur un plus grand nombre, ajoutez cette ligne à votre .profile(pour savoir pourquoi c'est un meilleur endroit que pour cela .bashrc, voir ici ):

export HISTSIZE=2000

Dorénavant, historyrenverra les 2000 dernières commandes que vous avez exécutées.

terdon
la source
5

Oui, man bashdit:

HISTSIZE - Le nombre de commandes à retenir dans l'historique des commandes

Mais il y a une Readlinevariable:history-size

Définissez le nombre maximal d'entrées d'historique enregistrées dans la liste d'historique. S'il est défini sur zéro, toutes les entrées d'historique existantes sont supprimées et aucune nouvelle entrée n'est enregistrée. S'il est défini sur une valeur inférieure à zéro, le nombre d'entrées d'historique n'est pas limité. Par défaut, le nombre d'entrées d'historique n'est pas limité.

Vous pouvez régler history-sizeavec HISTSIZE=1000, bind 'set history-size 1000'ou avec la ligne suivante dans votre ~/.inputrc:set history-size 1000

Exemples :

HISTSIZE=1000
bind 'set history-size 0'
echo $HISTSIZE # prints 1000
bind -v | grep history-size # prints set history-size 0
history # prints nothing

bind 'set history-size 0'
HISTSIZE=1000
echo $HISTSIZE # prints 1000
bind -v | grep history-size # prints set history-size 1000
history # prints    13  echo $HISTSIZE\n14  bind -v | grep history-size\n15  history

history-sizedisponible depuis bash-4.0-alpha: MODIFICATIONS

Evgeny Vereshchagin
la source
2

La HISTSIZEvariable dicte le nombre de commandes conservées dans l'historique d'exécution et HISTFILESIZEdétermine le nombre de commandes de l'historique d'exécution enregistrées une fois le shell terminé.

Bratchley
la source