回答:
必要なことはHISTSIZE
、bashプロファイルに設定するだけです(~/.bash_profile
)。HISTFILESIZE
設定しないでおくことができます。これにより、メモリ内の履歴とファイルベースの履歴の両方が構成されます。
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
問題は、HISTFILESIZEがセッションの起動時にファイルに保存される最大履歴のみを設定することです。HISTSIZEは、セッションの終了時に保存される行数を決定するものです。HISTFILESIZEがあなたのHISTSIZEよりも大きい場合、ファイルがHISTSIZEコマンドで上書きされてきているので、あなたがあなたのHISTSIZE以上見ることは決してないだろう(しない限り追加するあなたのセットの歴史を、それは別のトピックである:ルックアップするhistappend
には、コマンドシェルビルトインそのために) 。
これが効果が見られない理由です。HISTSIZEがデフォルト(おそらく500)の場合、履歴ファイルは常に最新の$ HISTSIZEコマンドによって上書きされます。古いもの(リストが$ HISTSIZEを超える可能性があるもの)はすべて消去されます。
ほとんどの場合、HISTSIZEとは別にHISTFILESIZEを設定する必要はありません。
HISTSIZEは、履歴ファイルに書き込まれる行数を決定します。コマンドリストは、終了時に履歴ファイルに書き込む前に切り捨てられ、最新のN行が保持されます。デフォルトでは、このリストは履歴ファイルを上書きします。
HISTFILESIZEは、履歴ファイル(行単位)の大きさを決定します。ファイルは起動時に切り捨てられ、最新のN行が保持されます。さらに、履歴ファイルは、HISTFILESIZEが設定されるたびに切り捨てられる可能性があります。
最後に、文書化されていないように見えますが、BASHは起動時にHISTSIZEが設定されている場合、HISTSIZEに基づいてHISTFILESIZEを設定します。私はこれをmacOSといくつかの種類のUbuntuで試しましたが、動作は一貫しています。あなたは(起動ファイルにHISTSIZEを設定している場合ではない任意の手段によって、コマンドラインを介して)、HISTFILESIZEが一致するように設定されます。(自分で試してください:.bash_profileでHISTSIZEを任意の大きな値に設定し、新しいターミナルを終了して起動するecho $HISTSIZE $HISTFILESIZE
と、それらが一致することがわかります。)
そのため、異なる値が必要な場合を除き、HISTFILESIZEを変更する必要はありません。また、異なる値を持つユースケースはまれです(通常、有用な情報を得るために、より多くの履歴カスタマイズ設定が必要になります)。