.zhistory에 대한 소스 제어 및 심볼릭 링크

.zhistory에 대한 소스 제어 및 심볼릭 링크

내 홈 디렉터리에 있는 도트 파일을 git 소스 제어 아래 별도의 폴더에 있는 실제 파일에 심볼릭 링크했습니다. 이것은 훌륭하게 작동하지만 어떤 이유로 문제가 있습니다 .zhistory.

$ echo $HISTFILE
/Users/amelio/.zhistory
$ cd & ln -s $DOT_FILES_REPO/.zhistory .
$ fc -W && fc -R

위의 명령을 실행한 후 내가 보는 .zhistory것은아니요마지막 명령 뒤의 심볼릭 링크입니다. 왜? .zhistory내 홈 디렉터리에 있는 다른 파일에 대한 심볼릭 링크를 어떻게 사용할 수 있나요 ?

답변1

zsh가 기록 파일을 업데이트하면 임시 파일이 생성된 다음 이를 다음과 같은 위치로 이동합니다.

print the history >.zhistory.new
mv .zhistory.new .zhistory

이전에 심볼릭 링크 였다면 .zhistory이후에는 그렇지 않을 것입니다.

이 접근 방식의 장점은 zsh가 충돌하더라도(오류, 갑작스러운 종료, 갑작스러운 재시작으로 인해) 기록 파일이 영향을 받지 않는다는 것입니다. 특히 기록 파일은 절대로 잘리거나 유효하지 않습니다.

기록 파일을 다른 위치에 저장하려면 심볼릭 링크를 사용하지 말고 대신 변수를 설정하세요 HISTFILE.

관련 정보