Answers:
这完全取决于外壳如何选择处理它
bash
默认情况下,退出时每个外壳程序的本地历史记录将覆盖历史记录文件,因此最后一个退出外壳程序将获胜。该histappend
选项将使它附加到主历史记录中(shopt -s histappend
)。
zsh
默认情况下执行相同的操作,并且有一些处理方法:
appendhistory
-每个Shell的历史记录都会在退出时附加到主历史记录文件中incappendhistory
-每次在任何shell中执行一行时都会更新主历史文件,而不必等到该shell退出sharehistory
-与一样incappendhistory
,还可以将主历史文件中的更改拉入所有正在运行的shell中,因此您可以在一个shell中运行命令,然后Up在另一个shell中运行以查看它shopt -s histappend
?
我最初是从O'Reilly的“ Unix Power Tools”书中得到这个想法的。
在我的.profile
设定中:
export HISTFILE=$HOME/.sh_hist.$$
每次.profile
读取时,我都会得到一个新的历史记录文件,该文件名为会话的PID。如果我有多个登录名,则每个登录名都会获得一个唯一的历史记录文件。在ksh
和中工作bash
。
如果您只是在X会话中打开新终端,则这些终端通常不是登录Shell,但是您可以将它们配置为充当登录Shell。例如,rxvt +ls
将rxvt
作为登录外壳启动。检查文档以了解您所使用的终端。
另外,除非您使用.logout
或.bash_logout
文件(或其他某种方式)进行清理,否则最终将产生大量.sh_hist
文件。