每当我重新启动终端时,我都无法使用箭头键查看之前在终端中输入的命令。我以前能够做到这一点。由于我更新到 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