如何从 emacs 保存 shell 历史记录并在终端中使用它?

poz*_*444 2 shell emacs ubuntu-12.04

我几乎所有东西都使用 emacs,但是当我运行 shellM-x shell然后从 emacs 退出时,历史没有保存,我(savehist-mode 1)为此尝试过但它似乎不起作用,有什么方法可以保存历史在 emacs 中使用的命令并在我在 emacs 之外使用 shell 时使用它们?

Aar*_*ler 5

savehist-mode不适用于此处;您遇到此问题的原因是因为默认情况下,Bash 只会在其内存中的历史缓冲区已满或退出时写入历史文件,而后者仅在干净退出时才写入历史文件 - 即 Bash被杀死而不是退出的进程永远不会将最近的命令写入历史文件。

要解决此问题,请确保在终止 shell 缓冲区之前,始终通过执行logoutexitC-d在提示符下键入来干净地完成 shell 会话;这将使 Bash 有机会在退出之前写入历史文件。

另外,请参阅有关历史文件管理的 Bash 常见问题解答,了解如何让 Bash 在每个命令执行后立即将其写入历史记录;一旦你开始工作,你就不必再担心在杀死缓冲区之前注销你的 shell,而是可以C-x k疯狂地放弃。

  • 正如 bash FAQ 所建议的,在我的 .bashrc 文件中设置 PROMPT_COMMAND="history -a" 对我来说效果很好,谢谢。 (2认同)