我的.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
显示提示符之前运行,因此如果第二个终端只是打开并处于打开状态,则它不会读取第一个终端中运行的新命令,直到您在第二个终端中运行某些命令并显示新提示符。