bash_history 何时以及如何附加?

bash_history 何时以及如何附加?

据我所知,单个 shell 的历史记录仅在 shell 关闭时附加到 .bash_history 文件中。这意味着我经常在崩溃/内核崩溃时丢失单个 shell 的历史记录。

为什么只有在关闭会话时才会写入历史记录?有没有办法在执行时写入每个命令?有什么理由我不希望在执行时写入每个命令(例如,写入巨大的 bash_history 文件时的性能问题)?

(我正在使用 Mac OS X 10.6 并使用 iTerm 同时运行多个选项卡式终端。我已设置 histappend 以及一些其他选项。

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 是在打印下一个提示之前执行的(如果我没记错的话)。顺便说一句,你对写入历史记录的时间的说法是正确的。修改后的提示命令将刷新历史记录。

相关内容