Man On a Mission

システム運用屋が、日々のあれこれや情報処理技術者試験の攻略を記録していくITブログ…というのも昔の話。今や歴史メインでたまに軍事。別に詳しくないので過大な期待は禁物。

【Linux】HISTSIZEとHISTFILESIZEの違い

前回記事にて、bashのコマンド履歴の保持件数を増やす設定について書きました。

oplern.hatenablog.com

「.bashrc」に、以下の行を追加するだけでしたね。

HISTSIZE=10000
HISTFILESIZE=10000

しかし、上記のHISTSIZEとHISTFILESIZEはいったいどういう意味なのでしょうか。
本日の記事は、HISTSIZEとHISTFILESIZEについての説明です。

 HISTSIZEとHISTFILESIZEそれぞれの意味

HISTSIZE

HISTSIZEは、使用中のbashの履歴数の設定です。
実行中シェルのコマンド履歴を、メモリ上にキャッシュします。
例えば、「HISTSIZE=10」とかに設定すると、コマンド履歴はメモリ上に10件しか保持されません。
キャッシュされたコマンド履歴は、シェル終了時に「.bash_history」ファイルに書き出されます。

ちなみに、使用中シェルのコマンド履歴を、「.bash_history」ファイルに書き出したくない場合は、以下のコマンドでクリアできます。
(.bash_historyはクリアされません。当たり前ですが一応。)

history -c
HISTFILESIZE

こちらは、「.bash_history」ファイルに記録できるコマンド履歴の件数です。
当該ファイルはbash起動時に読み込まれ、キャッシュされます。

ちなみに、以下コマンドにより、「.bash_history」ファイルを読み込み直します。
(使用中シェルのコマンド履歴は失われますので、注意してください。)

history -r

さらに、以下コマンドを使うと、現在のシェルのコマンド履歴を「.bash_history」ファイルに追記できます。

history -a

最後に

以下まとめです。
HISTSIZE指定件数分のコマンド履歴がキャッシュに保持され、シェル終了時に(当該シェルで実行されたコマンド履歴が)「.bash_history」ファイルに追記されます。ただし、「.bash_history」ファイルに記録できるのはHISTFILESIZEに指定した件数までであり、当該件数を超えると、古い履歴から削除されます。