zsh는 내 기록을 어디에 저장합니까?

zsh는 내 기록을 어디에 저장합니까?

zsh를 실행하는 두 개의 터미널을 열었습니다. 내 현재 기록 옵션 세트는 다음과 같습니다.

export HISTFILE=~/.histfile
export HISTSIZE=10000
export SAVEHIST=10000
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_SAVE_NO_DUPS
setopt APPEND_HISTORY
setopt EXTENDED_HISTORY

history를 입력 하거나 터미널에 을 입력하면 fc -l마지막 16개의 명령(번호가 매겨져 있음)이 표시됩니다. 이러한 이력은 두 껍질 모두에서 달랐고, 둘 다 내가 내부에서 본 것과도 달랐습니다 .histfile.

man zshoptions페이지에서 알 수 있는 한 , 이는 쉘을 종료한 후 해당 명령이 기록에 추가될 것으로 예상됩니다.

이 경우, 해당 시점까지의 각 단말기의 개인 이력은 어디에 저장되나요?

답변1

INC_APPEND_HISTORY옵션을 설정하면 기록 항목이 더 즉시 기록됩니다. 또한 SHARE_HISTORY이 값이 설정되면 새 쉘이 기록에서 제거하려는 것처럼 들리는 항목을 선택하게 될 수 있습니다. 즉석에서 기록 다시 쓰기는 이러한 옵션에 따라 달라집니다. 마치 쉘의 특정 인스턴스에서 다른 명령에 관심이 없는 것처럼 설정을 해제하고 INC_APPEND_HISTORY다음을 사용하여 해당 쉘의 기록을 삭제하면 됩니다 fc -R.

% echo super secret password
super secret password
% echo whoopsie 
whoopsie
% history -2
18030  echo super secret password
18031  echo whoopsie
% fc -R $HISTFILE
% history -3
36060  vim ~/.zshrc
36061  man readpassphrase
36062  mutt
% 

그런 다음 $EDITOR $HISTFILE초비밀 비밀번호가 기록 파일에 없는지 확인합니다(또한! 기능(또는 기능 배열)이 있을 수 있으며 zshaddhistory이 경우 해당 기능(또는 해당 기능)이 실제로 수행하는 작업을 확인해야 합니다). 를 사용하면 INC_APPEND_HISTORY항목이 에 있을 수 있으므로 $HISTFILE기록 파일을 편집하여 잘못된 항목을 제거한 다음 fc -R $HISTFILE기록 파일과 셸에서 해당 항목을 지워야 합니다. 새 쉘이 잘못된 기록 항목을 포착한 것으로 의심되면 모든 쉘에서 조치를 취 INC_APPEND_HISTORY하거나 모두 닫고 잘못된 행이 기록 파일에 다시 기록되지 않았는지 확인해야 합니다.SHARE_HISTORYfc -R

관련 정보