Answers:
Bash和zsh具有不同的默认值。默认情况下,Zsh不会将历史记录保存到文件中。
在没有配置文件的情况下运行zsh时,它将显示一个配置界面。在此配置界面中,选择
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
然后查看建议的设置并选择
# (0) Remember edits and return to main menu (does not save file yet)
对其他子菜单重复上述步骤,以完成(2),(3)键盘绑定和(4)选项,然后选择
(0) Exit, saving the new settings. They will take effect immediately.
从主菜单。
推荐的与历史记录相关的设置是
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory
我将为历史记录文件使用其他名称,以表明它是zsh的历史记录文件。在现代系统上可以增加1000条线路。
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
~/.zshrc
顺便说一下,这些行进入。
尽管现有答案是正确的,但我认为可能值得补充的是,比appendhistory
保存您的历史记录更好的选择是,这是SHARE_HISTORY
。
从文档SHARE_HISTORY
“两者都从历史记录文件中导入新命令,并且还会使您键入的命令附加到历史记录文件中”。这意味着壳也可以知道彼此的历史,而不必关闭当前的壳或打开新的壳。
因此,一起将其设置为:
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY
INC_APPEND_HISTORY_TIME
,它会如上所述从所有终端写入历史记录,但是该历史记录“不会立即从使用相同历史记录文件的其他Shell实例中获得”。这对我来说更有意义,因为这样我就可以独立地遍历每个终端的历史记录,但是仍然被记录下来。
INC_APPEND_HISTORY_TIME
可以理解为什么可能更合乎逻辑。我可能不应该说“更好”,我想这只是个人喜好问题!
zsh
,但是默认情况下会bash
在退出时写入其历史记录文件,这意味着,如果您以前从未使用过它并打开了一些shell,它们将全部显示历史记录,直到至少一个注销,从而写入其历史记录文件。