我在系统上使用默认的 bash shell,因此可能无法与其他 shell 一起使用。
这就是我的~/.screenrc
文件,以便每个新屏幕窗口都有自己的命令历史记录:
具有自己的命令历史记录的默认屏幕窗口
要打开一组默认屏幕窗口,每个窗口都有自己的命令历史记录文件,您可以将以下内容添加到~/.screenrc
file:
screen -t "window 0" 0 bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
screen -t "window 1" 1 bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
screen -t "window 2" bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
确保新 Windows 获得自己的命令历史记录
默认屏幕设置意味着您使用以下命令创建一个新窗口Ctrl+a c
or Ctrl+a Ctrl+c
。但是,只要您的~/.screenrc
文件,这些将使用默认值~/.bash_history
文件。为了解决这个问题,我们将覆盖用于创建新窗口的键绑定。将其添加到您的~/.screenrc
file:
bind c screen bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
bind ^C screen bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
现在,每当您创建一个新的屏幕窗口时,它实际上都会启动一个 bash shell,设置HISTFILE
环境变量包含当前屏幕窗口的编号($WINDOW
).
命令历史文件将在具有相同窗口号的屏幕会话之间共享。
将命令写入$HISTFILE
关于执行
正如正常的 bash 行为一样,历史记录仅写入$HISTFILE
退出 shell/screen 窗口时通过文件。但是,如果您希望在执行命令后将命令写入历史文件,从而立即可供具有相同窗口号的其他屏幕会话使用,您可以将类似的内容添加到您的~/.bashrc
file:
export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"