
今、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
これは、特定の項目の前に少なくとも1つのスペースを追加して履歴に書き込まれないようにするための便利な方法です。
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
。この項目以降のすべての項目が切り捨てられます。^@
その文字が何であるか、これらの項目が私の記録でどのように終わったのかわかりませんが、削除すると問題が解決しました。