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 -AI
zsh는 기존 파일에 추가됩니다.
이러한 설정에서도 zsh는 때때로 아래 설명에 따라 파일을 덮어 써서 크기를 줄입니다. - 그렇지 않으면 옵션
hist_save_by_copy
이 설정된 경우 (zsh 5.0 이후 기본적으로 설정되어 있지만 4.2에는 존재하지 않음) zsh는 임시 파일을 작성한 후 완료되면 제자리로 이동합니다. 이 경우 히스토리 파일이 기호 링크 인 경우 새 파일이 기호 링크를 대체합니다. - 그렇지 않으면 zsh가 기존 파일을 덮어 씁니다.
zsh를 기호 링크로 지정하지 말고 HISTFILE
히스토리 파일을 원하는 위치로 설정 하십시오.
역사의 얼마나 많은 줄은 변수를 통해 구성됩니다 유지 HISTSIZE
하고 SAVEHIST
. HISTSIZE
세션에 유지 SAVEHIST
되는 최대 행 수이며 히스토리 파일에 유지되는 최대 행 수입니다.
일부 히스토리를 저장하려면 기본값 이 0이므로 HISTFILE
와를 모두 설정해야합니다. 또한 zsh 5.0에서 기본값은 30입니다.SAVEHIST
SAVEHIST
HISTSIZE