Utilicé la respuesta en /unix//a/1292/41729 para habilitar el historial compartido en tiempo real entre terminales de bash separadas. Como se explica en la respuesta anterior, esto se logra agregando:
# 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"
Esto funciona bien si los shells de bash están separados (por ejemplo, abriendo diferentes terminales de bash usando CTRL+ALT+T
. Sin embargo, no funciona si uso tabs
(desde un terminal abierto `CTRL + SHIFT + T) en lugar de nuevas ventanas. ¿Por qué esta diferencia de comportamiento? ¿Cómo? ¿Puedo compartir el historial de bash también entre varias pestañas?
ACTUALIZACIÓN: Noté un comportamiento inusual: si escribo CTRL+C
, el último comando escrito en cualquiera de los otros terminales (tanto una pestaña como no) se muestra correctamente. Es como si CTRL + C fuerza un vaciado del historial para que luego se comparta correctamente.
Como ejemplo, las salidas (T1 denota el terminal 1 y el terminal 2 de 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 esto pueda ofrecer alguna pista!
~.bashrc
archivo? En una nota al margen, exportar esas variables no tiene sentido; solo desperdicia espacio ambiental.