回答:
HISTSIZE
bashセッションの進行中に履歴リストのメモリに保存される行またはコマンドの数です。
HISTFILESIZE
は、(a)セッションの起動時に履歴ファイルで許可される行数またはコマンド数であり、(b)今後のセッションで使用するためにbashセッションの終了時に履歴ファイルに保存されます。
file
:ディスク上-とlist
:メモリ内の違いに注意してください。
上記のすべての情報といくつかの例:
例1:
HISTFILESIZE=10
およびHISTSIZE=10
histappend
無効になっていると仮定すると、コマンド41〜50がHISTFILEに保存されます。HISTFILEには、最初に保持された10個のコマンドと10個の新しく書き込まれたコマンドが含まれています。例2:
HISTFILESIZE=10
とHISTSIZE=5
histappend
無効になっていると仮定すると、コマンド46〜50がHISTFILEに保存されます。HISTFILEには、最初に保持されていた10個のコマンドと5個の新しく書き込まれたコマンドが含まれています。例3:
HISTFILESIZE=5
およびHISTSIZE=10
histappend
無効になっていると仮定すると、コマンド41〜50がHISTFILEに保存されます。HISTFILEには、最初に保持されていた5つのコマンドと10個の新しく書き込まれたコマンドがあります。elixir_sinariからの情報:
コマンドを入力しても、履歴「ファイル」は更新されません。コマンドは個別に「リスト」に保管されます(historyコマンドによってアクセスされます)。これらの保存されたコマンドの数は、HISTSIZE値によって制御されます。シェル(対話式)が終了すると、最後の$ HISTSIZE行がその「リスト」から$ HISTFILEにコピー/追加されます。HISTFILESIZEが設定されている場合、この操作の後、$ HISTFILESIZE行(最新)のみが$ HISTFILEに存在することが保証されます。シェルが開始すると、「リスト」は$ HISTFILEから最大$ HISTSIZEコマンドまで初期化されます。
そしてman bash
ページから:
HISTSIZE変数の値は、履歴リストに保存するコマンドの数として使用されます。最後のHISTSIZEコマンドのテキスト(デフォルトは500)が保存されます。(...)
起動時に、履歴は変数HISTFILE(デフォルト〜/ .bash_history)で指定されたファイルから初期化されます。HISTFILEの値で指定されたファイルは、HISTFILESIZEの値で指定された行数以下になるように、必要に応じて切り捨てられます。(...)対話型シェルが終了すると、最後の$ HISTSIZE行が履歴リストから$ HISTFILEにコピーされます。histappendシェルオプションが有効になっている場合(下記のシェル構築コマンドの下のshoptの説明を参照)、行が履歴ファイルに追加されます。そうでない場合、履歴ファイルは上書きされます。HISTFILEが設定されていない場合、または履歴ファイルが書き込み不可の場合、履歴は保存されません。(...)履歴を保存した後、履歴ファイルはHISTFILESIZE行以下になるように切り捨てられます。HISTFILESIZEが設定されていない場合、
arturompの発言に基づいて構築し、少し明確にするために努力しています。
あなたは2000年の長い歴史があると仮定します。
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
表示されているものを削減できます HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
これで、コマンドをいくつ入力しても、最後の5つだけが記録されます。
~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2028 56
2029 yu45u
2030 HISTSIZE=5
2031 GGH
2032 GSDHFG
2033 JFDR
2034 ABSDDS
2035 AHFGHFD
最後の5つのコマンドのみが記録されているため、最初のコマンド( "ABC")が履歴にないことがはっきりとわかります。
これで、全履歴がファイル(.bash_history
)に保存され、このファイルがで取得する時間を変更できますHISTFILESIZE
。たとえば2033
HISTFILESIZE
、の場合、私の場合は次のようになります。
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
HISTSIZE=-1
しHISTFILESIZE=-1
ます。
bash
:manページは言う Non-numeric values and numeric values less than zero inhibit truncation
が、これが本当であるならば、私は私の歴史を失いたくないので、私はチェックする勇気を持っていなかった:-)
HISTSIZE='INFINITY'
およびに変更しましたHISTFILESIZE='ANDBEYOND'
。それらは非数値なので、すべてを保存します。先端をありがとう!