web-dev-qa-db-fra.com

Pourquoi quelqu'un ne serait-il pas fixé à «HISTAPPEND» dans BASH?

Après avoir découvert ce que cette shopt -s histappendsignifie , il semble un cadre très sain d'esprit et je suis surpris que ce ne soit pas par défaut. Pourquoi quelqu'un voudrait-il essuyer leur histoire sur chaque sortie Shell?

38
tshepang

Eh bien, quand histappend n'est pas défini, cela ne signifie pas que l'historique est essuyé sur chaque sortie Shell. Sans histappend bash lit l'histfile au démarrage dans la mémoire - lors de l'opération Nouvelles entrées sont ajoutées - et sur Shell Quitter les dernières lignes de hutisser sont écrites dans le fichier d'historique sans ajouter, c'est-à-dire remplacer le contenu précédent.

Par exemple, si le site histfile contient 400 entrées, lors de l'exécution Bash 10 nouvelles entrées sont ajoutées - la hutte est définie sur 500, puis le nouvel histfile contient 410 entrées.

Ce comportement n'est que problématique si vous utilisez plus d'instances Bash en parallèle. Dans ce cas, le fichier d'historique ne contient que le contenu de la dernière coquille de sortie.

Indépendamment de cette situation: Certaines personnes veulent essuyer leur histoire sur la sortie Shell à cause des raisons de confidentialité.

37
maxschlepzig

Pour la compatibilité historique, je suppose. L'option histappend n'existait pas jusqu'à ce que Bash 2.0.