En mode graphique, lorsqu'un utilisateur a plusieurs terminaux ouverts, comment les terminaux réécrivent-ils le fichier d'historique de cet utilisateur ? la raison pour laquelle je demande est qu'il est tout à fait possible que dans chacun des terminaux l'utilisateur finisse par exécuter différentes commandes. Alors, le fichier historique finit-il par enregistrer les commandes de tous les terminaux ou seulement du premier ouvert ? Ou existe-t-il un autre type de système utilisé pour remédier à cette situation ?
Réponse acceptée :
Cela dépend entièrement de la façon dont le shell choisit de le gérer
bash
par défaut, écrasera le fichier d'historique avec l'historique local de chaque shell à sa sortie, de sorte que le dernier shell à quitter l'emporte. Le histappend
l'option l'ajoutera à l'historique principal à la place (shopt -s histappend
).
zsh
fait la même chose par défaut, et a quelques options pour y faire face :
appendhistory
- L'historique de chaque shell est ajouté au fichier d'historique principal à la sortie du shellincappendhistory
— Le fichier d'historique principal est mis à jour chaque fois qu'une ligne est exécutée dans n'importe quel shell, au lieu d'attendre que ce shell se terminesharehistory
— Commeincappendhistory
, mais extrait également les modifications du fichier d'historique principal dans tous les shells en cours d'exécution, vous pouvez donc exécuter une commande dans un shell, puis appuyer sur Haut dans un autre shell et le voir