Usei a resposta em /unix//a/1292/41729 para ativar o histórico compartilhado em tempo real entre terminais bash separados. Conforme explicado na resposta acima, isso é alcançado adicionando:
# 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"
Isso funciona bem se os shells do bash estiverem separados (por exemplo, abrir diferentes terminais do bash usando CTRL+ALT+T
. No entanto, não funcionará se eu usar tabs
(a partir de um terminal aberto `CTRL + SHIFT + T) em vez de novas janelas. Por que essa diferença de comportamento? posso compartilhar o histórico do bash também entre várias guias?
ATUALIZAÇÃO: Percebi um comportamento incomum: se eu digitar CTRL+C
, o último comando digitado em qualquer um dos outros terminais (uma guia ou não) será exibido corretamente. É como se CTRL + C force uma descarga do histórico para que seja compartilhada corretamente.
Como exemplo, as saídas (T1 denota o terminal 1 e o terminal 2 do T2):
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
Espero que isso possa oferecer alguma dica!
~.bashrc
arquivo? Em uma nota lateral, exportar essas variáveis é inútil; apenas desperdiça espaço no ambiente.