이제 zsh
나는 무한한 역사를 갖고 싶다. 설정 HISTSIZE=
하고 작동합니다 bash
. 이제 이전 기록을 가져옵니다.
mv old_history .history
이건 꽤 크네
wc -l .history
43562 .history
지금 종료하고 zsh
다시 시작해도 이해하겠습니다.
wc -l .history
32234 .history
기록을 무제한으로 가질 수는 없나요 zsh
?
답변1
귀하의 기계에는 한계와 가능성이 있습니다.
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 메일링 리스트:
가지고 있는 메모리의 양, 기록이 차지하도록 허용할 수 있는 메모리의 양(내가 아는 한, 항상 메모리에 완전히 로드됨)을 결정하고 그에 따라 조치를 취해야 합니다. 제한을 제거하면 제한이 없다고 생각하게 되지만 항상 사용 가능한 리소스에 의해 제한되므로 현명하지 않습니다.
또는 리소스 고갈 문제가 발생하지 않을 것이라고 생각되면 HISTSIZE를 HISTSIZE를 HISTSIZE의 최대 LONG_MAX로 HISTSIZE에서 LONG_MAX로 설정할 수 있습니다.
Gentoo 솔루션에 대한 설명은 다음과 같습니다:
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
답변2
답변3
oh-my-zsh가 자체 값을 10000
설정한다는 사실을 깨닫기 전까지는 항상 기록에 제한이 있었습니다 . TL;DR, 다음 줄을 .HISTSIZE
SAVEHIST
.zshrc
내가 가진 또 다른 문제는 내 기록이 1024줄로 잘린다는 것입니다. 이유는 모르겠지만 다음과 같이 문제를 해결했습니다.
- 설정
HISTFILE=$HOME/.zsh_hist
(이전과 뭔가 다름) - 명시적으로 설정
HISTFILE=$HOME/.bash_history
됨~/.bashrc
HISTSIZE=100000
와 같은 일반 설정을 하십시오 .SAVEHIST=100000
export
나는 이것이 ZSH에서 대화식으로 시작할 때 bash가 HISTFILE
동일한 변수를 사용하도록 하는 set 사용과 관련이 있을 수 있다고 생각합니다 . HISTFILE
이 작업을 수행하지 않는 한 bash 기록 파일 설정은 필요하지 않을 수 있습니다 export
HISTFILE
.
답변4
문제는 zsh
내가 아니라 .zshrc
내 역사다. 다음과 같은 이상한 항목이 있습니다.
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@#1453692179
혼란스럽습니다 zsh
. 이 항목 이후의 모든 항목이 잘립니다. ^@
해당 문자가 무엇인지, 이러한 항목이 내 기록에서 어떻게 끝났는지 전혀 모르지만 삭제하면 문제가 해결되었습니다.