15 votes

Prompt_command pour recharger à partir de .bash_history

Mi .bashrc contient les éléments suivants :

HISTSIZE=30000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

Ce que je remarque :

  • les .bash_history fait sont ajoutés.
  • L'historique d'une session de terminal donnée no inclure des entrées ajoutées à partir d'autres sessions de terminal

Le comportement souhaité est d'avoir le .bash_history rechargée après toute commande sur n'importe quel terminal. Quel est le moyen d'y parvenir ? Il s'agirait probablement d'une modification de la fonction PROMPT_COMMAND ?

21voto

Mohsin Points 11

En history -a ne fait qu'ajouter des données au fichier historique. Cela n'affecte pas les sessions Shell à moins que vous ne lisiez également à partir de celles-ci. Donc, ce que vous recherchez est :

PROMPT_COMMAND="history -a; history -r"

Comme expliqué dans l'affaire help history :

  -r    read the history file and append the contents to the history
        list

De cette façon, vous ajouterez d'abord l'historique de votre Shell actuel à $HISTFILE et la lit ensuite, en important l'historique ajouté à partir de toute autre instance de Shell dans l'instance actuelle.

Notez que si vous exécutez une commande dans un terminal, elle n'apparaîtra pas dans l'historique d'un autre terminal tant que vous n'aurez pas exécuté une commande dans le second. L'historique $PROMPT_COMMAND est exécuté avant qu'une invite ne soit affichée, donc si le second terminal est juste ouvert et assis là, il ne lira pas la nouvelle commande exécutée dans le premier jusqu'à ce que vous exécutiez quelque chose dans le second et qu'une nouvelle invite soit affichée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X