Trucs et astuces Bash

Cette page référence quelques trucs et astuces sur Bash

L'interpréteur de commandes Bash est généralement configuré pour mémoriser les dernières commandes saisies par l'utilisateur lors d'une session interactive. Mais la configuration de base souffre de quelques défauts :

  • Toute commande saisie est mémorisée, y compris si de précédentes invocations de cette commande ont déjà été mémorisées. Lorsque la seule raison d'être de l'historisation est de gagner en confort et en efficacité en limitant les saisies - i.e. lorsqu'on se moque de connaître le nombre de fois où une commande a été invoquée ainsi que l'enchaînement des commandes - ces doublons polluent inutilement l'historique et rendent son parcours plus fastidieux. De plus, la taille de l'historique étant limitée, ces doublons font prématurément disparaître de l'historique des commandes invoquées plus rarement.
  • S'il est pratique de pouvoir retrouver une commande précédemment saisie, on peut souhaiter qu'une commande ne soit pas mémorisée pour des raisons de confidentialité. C'est par exemple le cas lorsque la commande fait apparaître un mot de passe en clair ou, plus généralement, révèle une information que l'on désire masquer, telle une partition cachée dans un volume chiffré.

Heureusement, il est possible d'altérer le fonctionnement par défaut de l'historique grâce à la variable d'environnement HISTCONTROL, renseignée dans le fichier d'initialisation ~/.bash_profile :

export HISTCONTROL=ignoredups:erasedups:ignorespace

Dans la déclaration qui précède :

  • ignoredups indique que les invocations consécutives d'une même commande ne doivent pas être mémorisées, seule la première invocation le sera.
  • erasedups indique que si une commande existe déjà dans l'historique, les précédentes invocations seront effacées au profit de la dernière.
  • ignorespace demande de ne pas historiser les commandes qui commencent par un espace.

Merci à Stéphane Adenot de m'avoir signalé l'existence de l'option ignorespace