Zsh의 명령 히스토리 에 내 기록이 모두 포함

Zsh는 명령 내역을 어떻게 추적합니까?

내 홈 디렉토리에 두 개의 파일이 있습니다 : .zhistory.zsh_history. 그들 사이의 차이점은 무엇입니까? 파일 에 내 기록이 모두 포함 된 것 같습니다 . Zsh는 그중 하나에 영원히 줄을 계속 추가합니까 ? 역사 검색이 너무 느리지 않습니까?

이 파일들을 다른 위치로 심볼릭 링크로 안전하게 만들 수 있습니까? (예 : 히스토리의 변경 사항을 추적하는 git 저장소)



답변

Zsh는 변수로 표시된 파일에 입력 라인 (시간 정보와 함께)을 저장합니다 HISTFILE. 이것은 절대 파일 이름이어야합니다 (그렇지 않으면 당시의 모든 디렉토리에 대해 해석됩니다).

Zsh에는에 대한 기본 제공 기본값이 없습니다 HISTFILE. zsh 배포에는 값이 ~/.histfile내장 된 새 사용자를위한 설정 마법사가 제공 되므로 기본적으로 zsh 사용자가 얻는 것입니다. Oh-my-zsh에는 HISTFILE=.zhistory사전 설정 이 제공됩니다 . 따라서 기본 설정과 oh-my-zsh로 zsh를 시도한 것처럼 보입니다. .zshrc현재 사용중인 파일을 확인 하려면 파일 (또는 파일 날짜)을 확인하십시오.

zsh가 파일을 여는 방법과 기호 링크 인 경우 어떻게되는지는 여러 옵션에 따라 다릅니다.

  • 옵션 중 하나 append_history(기본적으로 설정 됨) inc_append_history또는 share_history이 설정이 기록되어 있거나 기록이 명시 적으로 저장되어 있으면 fc -AIzsh는 기존 파일에 추가됩니다.
    이러한 설정에서도 zsh는 때때로 아래 설명에 따라 파일을 덮어 써서 크기를 줄입니다.
  • 그렇지 않으면 옵션 hist_save_by_copy이 설정된 경우 (zsh 5.0 이후 기본적으로 설정되어 있지만 4.2에는 존재하지 않음) zsh는 임시 파일을 작성한 후 완료되면 제자리로 이동합니다. 이 경우 히스토리 파일이 기호 링크 인 경우 새 파일이 기호 링크를 대체합니다.
  • 그렇지 않으면 zsh가 기존 파일을 덮어 씁니다.

zsh를 기호 링크로 지정하지 말고 HISTFILE히스토리 파일을 원하는 위치로 설정 하십시오.

역사의 얼마나 많은 줄은 변수를 통해 구성됩니다 유지 HISTSIZE하고 SAVEHIST. HISTSIZE세션에 유지 SAVEHIST되는 최대 행 수이며 히스토리 파일에 유지되는 최대 행 수입니다.

일부 히스토리를 저장하려면 기본값 이 0이므로 HISTFILE와를 모두 설정해야합니다. 또한 zsh 5.0에서 기본값은 30입니다.SAVEHISTSAVEHISTHISTSIZE