Когда и как добавляется bash_history?

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

Почему история пишется только при закрытии сессии? Есть ли способ, чтобы каждая команда была написана во время выполнения? Есть ли какая-то причина, по которой мне не нужно писать каждую команду во время выполнения (например, проблемы с производительностью при записи в огромный файл bash_history)?

(Я использую Mac OS X 10.6 и одновременно запускаю множество терминалов с вкладками вместе с iTerm. У меня настроен гистапенд вместе с некоторыми другими опциями.

export HISTSIZE=1000000
export HISTTIMEFORMAT="%d/%m/%y %T "
shopt -s histappend

)

1 ответ

Решение

Вам не хватает одной строки в вашем.bashrc. Добавлять:

PROMPT_COMMAND="$PROMPT_COMMAND;history -a"

после

shopt -s histappend

PROMPT_COMMAND выполняется перед печатью следующего приглашения (IIRC). Кстати, когда вы пишете историю, вы правы. Измененная команда приглашения очистит историю.

Другие вопросы по тегам