L’historique du Terminal et macOS High Sierra

Depuis macOS High Sierra, j’ai un souci assez désagréable avec le Terminal : il n’enregistre pas correctement l’historique des commandes tapées. Plus exactement, quand je ferme une fenêtre de Terminal et que je reviens plus tard dans une autre fenêtre, impossible (dans certains cas) de récupérer les commandes précédentes. En réalité, c’est une feature et pas un bug, mais c’est assez vite énervant.

Depuis OS X El Capitan, le Terminal doit en théorie enregistrer l’historique des commandes par session (en gros, chaque fenêtre ouverte du Terminal) et fusionner le tout dans une liste globale quand la session est fermée. En pratique, ça implique qu’il faut surtout bien fermer la session manuellement pour que ça fonctionne (en tapant exit ou avec ctrl + d). Dans la majorité de mes cas d’utilisation, simplement en fermant la fenêtre, ça n’enregistre tout simplement pas l’historique. Par contre, en fermant manuellement le Terminal (ou en éteignant le Mac), ça passe.

Apple explique assez bien le comportement dans les commentaires de ce fichier : /etc/bashrc_Apple_Terminal

Pour revenir au comportement précédent avec une seule liste unifiée, une simple commande dans le Terminal (si) suffit.

touch ~/.bash_sessions_disable

Normalement, et après avoir totalement relancé le Terminal, l’historique des commandes devrait s’enregistrer correctement en permanence (au détriment de la sécurité dans certains cas).