如何使 bash 在发出时间密集型命令时将命令保存到历史记录中,而不是仅在命令结束或被终止后才保存?

如何使 bash 在发出时间密集型命令时将命令保存到历史记录中,而不是仅在命令结束或被终止后才保存?

关于如何在退出会话之前保存命令的类似措辞有很多问题,这些问题回答了其他问题(PROMPT_COMMAND='history -a'histopt)。这问题例如,有误导性的措辞,但谈论的是未完全键入的命令。

我问的是 bash 自动保存命令的早期触发器。例如,我需要从另一个终端查看已经包含任何未完成执行的命令的历史记录。

我怀疑 bash 实现无法直接做到这一点。不过我认为值得一问。

答案1

遵循一些想法关联@Henrik 在评论部分提到,将此代码放在末尾.bashrc解决了我的问题:

function saveafterenter {
   history -a
}
trap 'saveafterenter' DEBUG

注意:有些人history -c; history -r还使用history -a;鉴于手册页中的描述,这似乎不是一个好主意。它将影响其他会话的生存历史。我们通常不希望出现这样的行为。每个会话通常更有用的是,通过独立地分支历史记录,直到它关闭并将其最后一个命令附加在历史文件的末尾。交织的会话将在附加到文件时交替命令。

相关内容