~/.bash_history在终端会话中,我尝试搜索我最近的命令,但是它们不存在。我猜这是因为我有多个终端会话打开。
有没有一种方法可以将当前终端会话的命令历史记录同步(即,同步推送或同步写出)到bash_history文件中(而无需关闭会话并丢失该环境)?
(这在思想上与sync命令如何在某些系统上存储文件系统修改非常相似。)
我想我可以设置bash来保留多个会话历史记录,但是当您在新机器上工作并且意外忘记以可能想要的方式设置bash时,推送当前历史记录缓冲区的功能仍然会很有用。
~/.bash_history在终端会话中,我尝试搜索我最近的命令,但是它们不存在。我猜这是因为我有多个终端会话打开。
有没有一种方法可以将当前终端会话的命令历史记录同步(即,同步推送或同步写出)到bash_history文件中(而无需关闭会话并丢失该环境)?
(这在思想上与sync命令如何在某些系统上存储文件系统修改非常相似。)
我想我可以设置bash来保留多个会话历史记录,但是当您在新机器上工作并且意外忘记以可能想要的方式设置bash时,推送当前历史记录缓冲区的功能仍然会很有用。
Answers:
将此行添加到.bashrc:
export PROMPT_COMMAND="history -a; history -n"
打开新终端并检查。
说明
history -a 将新的历史记录行添加到历史记录文件。history -n告诉bash读取未从历史记录文件读取到当前会话历史记录列表的行。PROMPT_COMMAND:此变量的内容在bashshow提示符前按常规命令运行。因此,每次执行命令后,history -a; history -n都会执行一次,并且bash历史记录也会同步。history -a在未修改bashrc的终端中使用。
export PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
${PROMPT_COMMAND}为空,则由于前导而产生错误;
export PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"
history -ashell内置命令,但是.bash_history在那之后我现在不知何故在文件上得到了“权限被拒绝” 。