~/.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
:此变量的内容在bash
show提示符前按常规命令运行。因此,每次执行命令后,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 -a
shell内置命令,但是.bash_history
在那之后我现在不知何故在文件上得到了“权限被拒绝” 。