에서 zsh
무제한 역사를 갖고 싶습니다. HISTSIZE=
에서 작동하는 설정 했습니다 bash
. 이제 오래된 역사를 가져옵니다
mv old_history .history
꽤 큰
wc -l .history
43562 .history
이제 닫고 zsh
다시 시작하면
wc -l .history
32234 .history
에 무제한 역사를 가질 수 zsh
없습니까?
에서 zsh
무제한 역사를 갖고 싶습니다. HISTSIZE=
에서 작동하는 설정 했습니다 bash
. 이제 오래된 역사를 가져옵니다
mv old_history .history
꽤 큰
wc -l .history
43562 .history
이제 닫고 zsh
다시 시작하면
wc -l .history
32234 .history
에 무제한 역사를 가질 수 zsh
없습니까?
답변:
기계의 한계와 가능성이 있습니다.
HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000000
SAVEHIST=10000000
setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS # Do not display a line previously found.
setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY # Don't execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing nonexistent history.
로부터 zsh을 메일 링리스트 :
사용 가능한 메모리 양, 사용 가능한 메모리 양 (이력이 항상 메모리에 완전히로드 된 AFAIK)을 결정하고 그에 따라 조치를 취해야합니다. 사용 가능한 리소스에 의해 항상 제한되는 동안 제한이 없다는 생각으로 한계를 제거하는 것이 현명하지 않습니다.
또는 리소스 소모 문제가 발생하지 않는다고 생각되면 limits.h에서 HISTSIZE를 LONG_MAX로 설정하면됩니다. HISTSIZE가 가질 수있는 최대 수입니다.
젠투 솔루션을 설명하는 것은 다음과 같습니다.
export HISTSIZE=2000
export HISTFILE="$HOME/.history"
다음 명령이 없으면 기록이 저장되지 않습니다.
export SAVEHIST=$HISTSIZE
히스토리가 중복 된 항목 (예 : 단일 쉘 세션 중에 여러 번 입력 한 ls -l)을 기록하지 않도록 hist_ignore_all_dups 옵션을 설정할 수 있습니다.
setopt hist_ignore_all_dups
특정 항목이 하나 이상의 공백을 선행하여 내역에 기록되지 않도록하는 유용한 방법입니다.
setopt hist_ignore_space
50000
있지만 문제가 해결되지 않습니다.
당신은 모두를 설정해야 HISTSIZE
하고 SAVEHIST
. 메모리에 보존 할 히스토리 행 수와 히스토리 파일에 보존 할 행 수를 각각 표시합니다.
zsh에는 "무한"을 의미하는 설정이 없다고 생각하지만 모든 실제적인 목적으로 10 억은 무한한 반면 32 비트 시스템에서는 시스템을 대표 할 수 있습니다.
HISTFILE=~/.zsh_history
HISTSIZE=999999999
SAVEHIST=$HISTSIZE
문제는 zsh
또는 내 문제가 아니라 .zshrc
내 역사에 있습니다. 같은 이상한 항목이 있었다
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@#1453692179
혼란스럽고이 zsh
항목 이후의 모든 내용이 잘 렸습니다. 나는 어떤 인물이 어떤 캐릭터에 ^@
해당하는지, 또는이 항목들이 내 역사에서 어떻게 생겼는지 모르지만 그것들을 제거하면 문제가 해결되었습니다.
terminology
그리고 vim
.
^@
ASCII NUL ( \0
) 문자입니다.