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_HISTORY
fc -R