Un ami, toady, m'a appris une super astuce pour l'interpréteur bash : la variable d'environnement $HISTIGNORE. Elle permet d'éviter que certaines commandes soient mises dans l'historique. Voici ma configuration actuelle :

export HISTIGNORE='&:[bf]g:exit:*>|*:history*:svn revert*:svnrevert*:*rm*-rf*:*rm*-f*'
  • « & » évite de sauver plusieurs fois la même commande
  • « [bf]g » ignore les commandes « bg » et « fg »
  • « *>|* » ignore toutes les commandes contenant >| (redirige la sortie dans un fichier même s'il existe déjà)
  • « history* » ignore les commandes contenant « history » (ex: "history|tail")
  • « svn revert* » et « svnrevert* » ignore la commande svn revert (et mon alias svnrevert)
  • « *rm*-rf* » et « *rm*-f* » ignorent « rm -rf » et « rm -f »

Cette configuration m'empêche en particulier de reproduire la boulette suivante :

svn diff > ~/patch
(...)
svn diff >| ~/patch
svnrevert >| ~/patch   # aïe !