Ho usato la risposta in /unix//a/1292/41729 per abilitare la cronologia condivisa in tempo reale tra terminali bash separati. Come spiegato nella risposta sopra, ciò si ottiene aggiungendo:
# 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"
Funziona bene se le shell bash sono separate (ad esempio aprendo diversi terminali bash usando CTRL+ALT+T
. Tuttavia non funziona se uso tabs
(da un terminale aperto `CTRL + MAIUSC + T) anziché nuove finestre. Perché questa differenza di comportamento? Come posso condividere la cronologia di bash anche tra varie schede?
AGGIORNAMENTO: ho notato un comportamento insolito: se digito, CTRL+C
l'ultimo comando digitato in uno qualsiasi degli altri terminali (sia una scheda che non) viene visualizzato correttamente. È come se CTRL + C forzasse un flush della cronologia in modo che fosse correttamente condiviso.
Ad esempio le uscite (T1 indica i terminali 1 e 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
Spero che questo possa offrire qualsiasi suggerimento!
~.bashrc
file? In una nota a margine, esportare quelle variabili è inutile; spreca solo spazio nell'ambiente.