Я использовал ответ в /unix//a/1292/41729, чтобы включить совместную историю в реальном времени между отдельными терминалами bash. Как объяснено в ответе выше, это достигается путем добавления:
# 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"
Это прекрасно работает, если оболочки bash разделены (например, открываются разные терминалы bash с использованием CTRL+ALT+T
. Однако это не работает, если я использую tabs
(с открытого терминала `CTRL + SHIFT + T), а не новые окна. Почему такая разница в поведении? Как я могу поделиться историей Bash также среди различных вкладок?
ОБНОВЛЕНИЕ: я заметил необычное поведение: если я печатаю, CTRL+C
то последняя команда, набранная на любом из других терминалов (с вкладкой или без), отображается правильно. Это как если бы CTRL + C принудительно очищал историю, чтобы затем правильно делиться.
В качестве примера выходы (Т1 обозначает клемму 1, а Т2 - клемму 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
Надеюсь, что это может предложить любую подсказку!
~.bashrc
файл? С другой стороны, экспортировать эти переменные бессмысленно; просто впустую пространство окружающей среды.