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

在linux中使用screen命令不允许记录命令历史记录,linux,command,history,Linux,Command,History,我已经使用screen很长一段时间了,我同意,它提高了我的工作效率。但我真正错过的一件事是命令历史记录。我在屏幕会话中键入的任何内容都不会记录在命令历史记录中。当我在谷歌上搜索相同的内容时,我发现了与此问题相关的内容: 但令人惊讶的是,在我的例子中,所有的别名都完好无损,我可以毫无问题地使用它们。据我所知,打开一个新的屏幕会话实际上会打开一个新的子shell。如果这是真的,有人可以帮助我如何将在屏幕会话中键入的命令记录在命令历史记录中,以便如果我稍后打开新的终端/屏幕,我将能够使用CTRL+R

我已经使用screen很长一段时间了,我同意,它提高了我的工作效率。但我真正错过的一件事是命令历史记录。我在屏幕会话中键入的任何内容都不会记录在命令历史记录中。当我在谷歌上搜索相同的内容时,我发现了与此问题相关的内容:


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

在和中的会话之间使用共享历史记录很容易。简而言之,将此添加到您的
~/.zshrc

setopt share_history
HISTSIZE=1000
SAVEHIST=1000
HISTFILE=~/.history
setopt APPEND_HISTORY

我还找到了有关的说明,但我只在Zsh上尝试过这一点。

假设屏幕中正在使用bash shell

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

shopt -s histappend
PROMPT_COMMAND="$PROMPT_COMMAND;history -a"
第一个命令将命令追加到历史文件中,而不是覆盖它,而第二个命令将在每个命令执行后立即保存,而不是在会话结束时保存

进一步说明我的答案。。在注销/关闭会话之前,已打开的每个bash会话的历史记录都存储在内存中。然后它将覆盖bash历史文件。
这些命令将附加到历史文件,然后在每个命令后刷新到该文件

请注意,在某些系统上,
PROMPT\u命令
实际上没有定义,因此这将导致语法错误。