Prompt_command 从 .bash_history 重新加载

Prompt_command 从 .bash_history 重新加载

我的.bashrc包含以下内容:

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

我注意到:

  • .bash_history 被附加。
  • 给定终端会话的历史记录不是包括从其他终端会话附加的条目

期望的行为是.bash_history在任何终端上执行任何命令后重新加载。如何实现这一点?大概是修改一下PROMPT_COMMAND

答案1

history -a命令仅附加到历史文件。这不会影响任何 shell 会话,除非您也从中读取。因此,您要查找的是:

PROMPT_COMMAND="history -a; history -r"

详见help history

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

这样,您将首先附加当前 shell 的历史记录,$HISTFILE然后从中读取,将从任何其他 shell 实例附加的历史记录导入到当前 shell 实例中。

请注意,如果您在一个终端中运行命令,则该命令不会出现在另一个终端的历史记录中,直到您在第二个终端中运行命令。命令在$PROMPT_COMMAND显示提示符之前运行,因此如果第二个终端只是打开并处于打开状态,则它不会读取第一个终端中运行的新命令,直到您在第二个终端中运行某些命令并显示新提示符。

相关内容