Question Quand et comment bash_history est-il ajouté?


Pour autant que je sache, l'historique d'un shell individuel n'est ajouté au fichier .bash_history que lorsque le shell est fermé. Cela signifie que je perds souvent l'historique des shells individuels lors de crash / panics du noyau.

Pourquoi l'historique est-il écrit uniquement à la clôture d'une session? Existe-t-il un moyen d’écrire chaque commande au moment de l’exécution? Y a-t-il une raison pour laquelle je ne voudrais pas que chaque commande soit écrite au moment de l'exécution (par exemple, des problèmes de performance lors de l'écriture dans un énorme fichier bash_history)?

(J'utilise Mac OS X 10.6 et de nombreux terminaux à onglets simultanément avec iTerm. J'ai ajouté histappend avec d'autres options.

export HISTSIZE=1000000
export HISTTIMEFORMAT="%d/%m/%y %T "
shopt -s histappend

)


6
2017-12-01 00:30


origine




Réponses:


Vous manquez une ligne dans votre .bashrc. Ajouter:

PROMPT_COMMAND="$PROMPT_COMMAND;history -a"

après

shopt -s histappend

PROMPT_COMMAND est exécuté juste avant l'impression de la prochaine invite (IIRC). Au fait, vous avez raison quand l’histoire est écrite. La commande d'invite modifiée videra l'historique.


4
2017-12-01 06:57



Je recommande plutôt de mettre PROMPT_COMMAND="$PROMPT_COMMAND;history -a" dans .bash_profile comme il s’agit d’une expression récursive et pour chaque niveau d’imbrication de bash, cela ajoutera le prochain inutile history -a appel. - czerny