bash_history 何时以及如何附加到?

kef*_*ich 6 bash command-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
Run Code Online (Sandbox Code Playgroud)

)

jam*_*mes 4

您的 .bashrc 中缺少一行。添加:

PROMPT_COMMAND="$PROMPT_COMMAND;history -a"

shopt -s histappend

PROMPT_COMMAND 在打印下一个提示之前执行 (IIRC)。顺便说一句,关于历史何时被书写,你是对的。修改后的提示命令将刷新历史记录。

  • 这会导致“;history -a”出现语法错误 (2认同)