7

Мой .bashrc содержит следующее:

HISTSIZE=30000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

Что я замечаю:

  • .bash_history действительно добавляется.
  • история в данном терминальном сеансе не включает записи, добавленные из других терминальных сеансов

Желаемое поведение - перезагружать .bash_history после любой команды на любом терминале. Как это сделать? Предположительно, это будет модификация PROMPT_COMMAND ?

1 ответ1

11

Команда history -a добавляет только файл истории. Это не влияет на любой сеанс оболочки, если вы не читаете из него. Итак, что вы ищете:

PROMPT_COMMAND="history -a; history -r"

Как объясняется в help history:

  -r    read the history file and append the contents to the history
        list

Таким образом, вы сначала добавите историю вашей текущей оболочки в $HISTFILE а затем прочитаете ее, импортировав историю, добавленную из любого другого экземпляра оболочки, в текущий.

Обратите внимание, что если вы запустите команду в одном терминале, она не появится в истории другого, пока вы не запустите команду во втором. $PROMPT_COMMAND запускается до того, как отображается приглашение, поэтому, если второй терминал просто открыт и находится там, он не будет читать новую команду, запущенную в первом, до тех пор, пока вы не запустите что-то во втором, и не отобразится новое приглашение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .