终端重启后 ZSH 命令历史记录未保存

终端重启后 ZSH 命令历史记录未保存

每当我重新启动终端时,我都无法使用箭头键查看之前在终端中输入的命令。我以前能够做到这一点。由于我更新到 macOS Catalina 并每次重新启动终端时都使用 Apple 的默认 ZSH,因此没有命令历史记录。

我的 zshrc 文件使用以下配置来保存命令:

# History in cache directory:
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.cache/zsh/history
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY 

答案1

问题可能是该目录~/.cache/zsh/不存在。如果 hist 文件不存在,Zsh 将为您创建它,但它不会为您创建不存在的目录。

有两种解决方案,具体取决于您的喜好:

  • 删除您设置的行$HISTFILE。在 macOS 上,您不需要设置它(除非您想更改默认值),因为这已经在/etc/zshrc.
  • 创建您希望 Zsh 写入文件的目录。

顺便说一句,如果您使用任何HIST_*_DUPS选项,您应该确保$HISTSIZE始终比 至少大 20% $SAVEHIST。否则,一旦你的历史记录超过 ,Zsh 就无法有效消除重复项$SAVEHIST。所以,就你的情况而言,我会将其增加到HISTSIZE=12000或更大。

答案2

添加到上面的正确答案。您可以将其放入.zshrc文件中以检测该目录是否存在并在由于某种原因丢失时创建它......

if [ ! -d $(dirname $HISTFILE) ]; then
    echo "$(dirname $HISTFILE)/ directory does not exist. Creating it now..."
    mkdir -p $(dirname $HISTFILE)
fi

相关内容