回答:
マシンには限界と可能性があります。
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メーリングリストから:
どれだけのメモリがあるか、どれだけ履歴を使用できるかを決定し(常にメモリに完全にロードされていることを知る)、それに応じて行動する必要があります。制限を削除することは賢明ではありません。使用可能なリソースによって常に制限されているのに制限はないという考えをあなたに与えるからです。
または、リソースの枯渇で問題が発生すると思わない場合は、limits.hからHISTSIZEをLONG_MAXに設定するだけで済みます。これは、HISTSIZEが持つことができる最大数です。
Gentooソリューションを説明しています:
export HISTSIZE=2000
export HISTFILE="$HOME/.history"次のコマンドがないと、履歴は保存されません。
export SAVEHIST=$HISTSIZE履歴が重複したエントリ(単一のシェルセッション中に何度も入力されたls -lなど)を記録しないようにするには、hist_ignore_all_dupsオプションを設定できます。
setopt hist_ignore_all_dups特定のエントリの前に少なくとも1つのスペースを置くことにより、特定のエントリが履歴に記録されないようにする便利なトリック。
setopt hist_ignore_space50000ことはできますが、それでも問題は解決しません。
                    HISTSIZEとの両方を設定する必要がありSAVEHISTます。それぞれ、メモリに保持する履歴の行数と履歴ファイルに保持する行数を示します。
zshには「無限」を意味する設定はないと思いますが、実際には10億は無限ですが、32ビットマシンではマシン表現可能です。
HISTFILE=~/.zsh_history
HISTSIZE=999999999
SAVEHIST=$HISTSIZE私は歴史に問題がで制限されて持っていた10000私は、ああ、私の-zshのは、独自の設定をして実現するまでHISTSIZEとSAVEHIST値を。TL; DR、行をの下部に配置してください.zshrc。
問題は、zshまたはにありませんでし.zshrcたが、履歴にあります。次のような奇妙なエントリがありました
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@#1453692179混乱しzsh、これらのエントリ以降はすべて切り捨てられました。私はどのキャラクターに^@対応するのか、これらのエントリーが私の歴史の中でどのように終わったのか分かりませんが、それらを削除することで問題は解決しました。
terminologyおよびvim。
                    ^@ASCII NUL(\0)文字です。