Après avoir découvert ce que cela shopt -s histappend
signifie , cela semble être un paramètre très sain d'esprit et je suis surpris que ce ne soit pas le cas par défaut. Pourquoi quelqu'un voudrait-il effacer son historique à chaque sortie de shell?
bash
command-history
Tshepang
la source
la source
bash
"pure" ou fournie par la distribution.bashrc
. pour les anciens, @Gilles est probablement correct. dans ce dernier sens,-s histappend
est par défaut sur, par exemple, Debian, depuis 2008: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459Réponses:
Eh bien, quand
histappend
n'est pas défini, cela ne signifie pas que l'historique est effacé à chaque sortie de shell. Sanshistappend
bash, le fichier d’historique au démarrage est lu en mémoire - pendant le fonctionnement, de nouvelles entrées sont ajoutées - et à la sortie du shell, les dernières lignes HISTSIZE sont écrites dans le fichier historique sans ajout, c’est-à-dire qu’elles remplacent le contenu précédent.Par exemple, si le fichier historique contient 400 entrées, 10 nouvelles entrées sont ajoutées lors de l'exécution de bash - histsize est défini sur 500, alors le nouveau fichier d'historique contient 410 entrées.
Ce comportement n'est problématique que si vous utilisez plusieurs instances bash en parallèle. Dans ce cas, l'historique ne contient que le contenu du dernier shell existant.
Indépendamment de ceci: Certaines personnes veulent effacer leur historique à la sortie du shell pour des raisons de confidentialité.
la source
histappend
a-t-elle une pertinence pour savoir siroot
l'histoire atteint un disque? Encore une fois, cela n'affecte que ce qui est écrit, pas si .histappend
ainsi queHISTCONTROL=ignoredups:erasedups:ignorespace
semble être un bon défaut pour la plupart des gens.histappend
efficacité est-elle sans signification si j'aiHISTFILESIZE=
etHISTSIZE=
pour une histoire infinie?Pour la compatibilité historique, je suppose. L'
histappend
option n'existait pas avant bash 2.0.la source
histappend
.