터미널을 다시 시작한 후 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

관련 정보