linux - 在 linux 中使用 screen 命令不允许记录命令历史记录

标签 linux command history

我使用屏幕已经有一段时间了,我同意,它提高了我的工作效率。但我真正想念的一件事是命令历史记录。我在屏幕 session 中键入的任何内容都不会记录在命令历史记录中。当我用谷歌搜索时,我发现了与此问题相关的内容: http://www.linuxquestions.org/questions/slackware-14/aliases-lost-when-using-screen-723624/

但令人惊讶的是,在我的案例中,所有别名都完好无损,我可以毫无问题地使用它们。据我所知,打开一个新的屏幕 session 实际上会打开一个新的子外壳。如果这是真的,有人可以帮助我如何让在屏幕 session 中键入的命令记录在命令历史记录中,这样如果我稍后打开一个新的终端/屏幕,我将能够使用命令历史记录访​​问命令CTRL+R。任何帮助我在命令历史记录中创建屏幕日志命令的解决方案都会非常有帮助。珍惜你的时间。谢谢你。

最佳答案

假设屏幕中正在使用 bash shell。

将 2 条语句插入到 ~/.bashrc 中:

shopt -s histappend
PROMPT_COMMAND="$PROMPT_COMMAND;history -a"

第一个命令将命令附加到历史文件,而不是覆盖它,而第二个命令在每个命令执行后立即保存,而不是在 session 结束时保存。

为了扩展我的回答.. 您打开的每个 bash session 的历史记录都存储在内存中,直到您注销/关闭 session 。然后它将覆盖 bash 历史文件。 这些命令将附加到历史文件,然后在每个命令后刷新到文件。

关于linux - 在 linux 中使用 screen 命令不允许记录命令历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510217/

相关文章:

Emacs 文件集 : how to run other (elisp, 不是 shell) 命令?

c++ - `auto` 之前是做什么用的?

terminal - 进程接收 SIGTTYIN/TTOU 而不是阻塞的历史原因是什么?

linux - 不能在算术表达式中使用乘法

linux - 如何在 Linux 上启用 WiFi channel 12 和 13?

linux - git:确定是否有文件不在 repo 协议(protocol)中,但应该添加

json - 使用 jq 将 JSON 转换为 CSV

Hadoop 管理 : Admin Command to merge fsimage and edits log

wpf - 执行 ApplicationCommands.Close 时实际发生的情况

ajax - IE历史推送状态