Sur la page man de bash on peut lire ceci concernant la variable HISTCONTROL :
HISTCONTROL Une liste de valeurs, séparées par des deux-points, commandant la façon dont les commandes sont sauvegardées dans la file d’historique. Si la liste des valeurs contient la valeur ignorespace, les lignes commençant par une espace ne sont pas sauvegardées dans la file d’historique. La valeur ignoredups conduit à ne pas sauvegarder une ligne correspondant exactement à la ligne de commande précédente. La présence de ignoreboth est un condensé pour ignorespace et ignoredups. La valeur erasedups conduit à retirer de la file d’historique toutes les lignes précédant la ligne courante et lui correspondant avant que cette ligne y soit sauvegardée. Toute valeur qui ne fait pas partie de la liste ci-dessus est ignorée. Si HISTCONTROL est inexistante ou si elle ne contient pas une valeur correcte, toutes les lignes lues par l’analyseur de l’interpréteur seront sauvegardées dans la file d’historique, selon la valeur de HISTIGNORE. La seconde ligne et les suivantes d’une commande multiligne ne sont pas testées et sont ajoutées dans l’historique indépendamment de la valeur de HISTCONTROL.
Voici quelques test pour ce rendre compte du comportement de l’historique en fonction de la valeur de HISTCONTROL.
HISTCONTROL = ignoredup
En mode ignoredup on tape cd temp / cd .. / cd temp / cd ..
Contenu de l’historique :
539 cd temp 540 cd .. 541 cd temp 542 cd ..
Par contre si on tape on tape cd temp /cd downloads / cd .. / cd .. on aura :
544 cd temp 545 cd downloads/ 546 cd ..
Les commandes identiques consécutives sont regroupées
HISTCONTROL = erasedup
En mode erasedups on tape cd temp / cd .. / cd temp / cd ..
Contenu de l’historique :
550 cd temp 551 cd ..
Qu’une seule ligne cd temp et cd .. a été gardé (les dernières) toutes les précédentes préalablement présentes/tapés (539-541, 544, 546) ont été supprimées.
HISTCONTROL = ignorespace
En mode ignorespace on saisie cd temp et cd .. précédé d’un espace
Contenu de l’historique :
552 cd temp
La commande cd … (précédée d’un espace) n’apparait pas
HISTCONTROL = ignoreboth
ignoreboth est un condensé pour ignorespace et ignoredups
Mon Choix
HISTCONTROL=erasedups:ignorespace