Mac OSX bashシェルの履歴の長さを増やすことはできません


26

〜/ .bash_profileを500行以上の長さに設定しましたが、システムがこれをキャッチできないようです。

なぜなのかご存知ですか?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

回答:


34

を設定する必要もありHISTSIZE=10000000ます。

HISTFILESIZE履歴ファイルHISTSIZEに保持する行数を決定し、メモリに保持する行数を決定します。両方ともデフォルト500

echo $HISTFILESIZE $HISTSIZE変更を加える前に実行し、その後で再度実行します。あなたは確認する必要があり10000000 500、最初10000000 10000000の後。


15

ファイル内のエクスポート HISTSIZEおよびHISTFILESIZE環境変数が必要~/.bash_profileです。

あなたの中に以下の行を追加します~/.bash_profile

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

8

回答:

必要なことは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を変更する必要はありません。また、異なる値を持つユースケースはまれです(通常、有用な情報を得るために、より多くの履歴カスタマイズ設定が必要になります)。


あなたは正しいZimです。Bashソースコードは、HISTFILESIZEが設定されていない場合、HISTFILESIZEをHISTSIZEに設定するだけであることを示しています。 git.savannah.gnu.org/cgit/bash.git/tree/…–
ロバート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.