zsh 中不保存历史记录

zsh 中不保存历史记录

每当我打开终端的新实例时,历史记录都是空的。这是为什么?我需要设置一些东西吗?但在 bash 中不需要这样做。

答案1

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顺便说一句,这些行进入。

答案2

虽然现有的答案是正确的,但我认为可能值得补充的是,可能有比appendhistory保存历史记录更好的选择,这就是SHARE_HISTORY.

从文档中SHARE_HISTORY“既可以从历史文件导入新命令,也可以使您键入的命令附加到历史文件中”。这意味着 shell 也知道彼此的历史记录,而不必关闭当前的 shell 或打开一个新的历史记录。

所以,你应该这样设置:

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY

答案3

如果它不起作用,并且您已准备好所有这些,请尝试:

fc -W

这会将当前历史记录写入历史文件。如果你得到:

zsh: locking failed for /home/username/.zsh_history: permission denied

然后是时候检查文件的权限了在父目录上。

答案4

使用别名:

别名历史=“历史1”

您可以将其添加到 .zprofile

测试一下,看看区别:历史历史1

相关内容