J'ai utilisé la réponse dans /unix//a/1292/41729 pour activer l'historique partagé en temps réel entre des terminaux bash distincts. Comme expliqué dans la réponse ci-dessus, ceci est réalisé en ajoutant:
# avoid duplicates..
export HISTCONTROL=ignoredups:erasedups
# append history entries..
shopt -s histappend
# After each command, save and reload history
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Cela fonctionne bien si les shells bash sont séparés (par exemple, en ouvrant différents terminaux bash en utilisant CTRL+ALT+T
. Cependant, cela ne fonctionne pas si j'utilise tabs
(à partir d'un terminal ouvert `CTRL + SHIFT + T) plutôt que de nouvelles fenêtres. Pourquoi cette différence de comportement? Comment puis-je partager l'historique de bash également entre différents onglets?
MISE À JOUR: J'ai remarqué un comportement inhabituel: si je tape, CTRL+C
la dernière commande tapée dans l'un des autres terminaux (à la fois un onglet ou non) s'affiche correctement. C'est comme si le CTRL + C force un vidage de l'historique pour qu'il soit correctement partagé.
A titre d'exemple les sorties (T1 désigne la borne 1 et la borne T2 2):
T1:
ls -lah <enter>
# the list of files and directory is shown
T2:
cd Documents <enter>
T1:
<up> (i.e. I press the up arrow)
ls -lah #i.e the last command in terminal 1 is shown rather than the last of terminal 2
^C (i.e. I press CTRL+C)
<up>
cd Documents #the last command issued in terminal 2 is correctly displayed
J'espère que cela peut offrir un indice!
~.bashrc
dossier? D'un côté, exporter ces variables est inutile; gaspille juste l'espace de l'environnement.