bashで無限のコマンド履歴を取得する方法は?


54

設定しましexport HISTSIZE=99999999999999たが、それが最良の方法ですか?オーバーフローが発生するかどうかはわかりません。コマンド履歴の制限を削除するためのテスト済みの信頼できる方法を探しています。


私が知っていることを行うための組み込みメカニズムはありません。

私はコメントしているだけなので、これが答えられたら、私も知っているでしょう!!

2
debian-administration.org/articles/543がより良い答えかもしれません。少なくとも、スーパーユーザーのソリューションよりも大きな無限大の値を処理します。:-)

おそらく実際には9999(または999、私は1000を使用)に減らすことができます。有用な履歴が約1000を超えることは一度もありません。コマンドを回復してスクリプトにしたい場合、通常は1000コマンド以内でそれを行います。さもなければ、それは行くことができ、害はありません。
ジョナサンレフラー

@JonathanLeffler:は1300行で、私ができる限り小さいです。Ctrl-Rは非常に便利です。
l0b0

回答:


69

確かに(十分に)文書化されておらず、この計画のbashユーザーの99%がHISTSIZEを非常に大きな数に設定していると思います。

GNU bashの歴史では、強力なreadlineライブラリを介して処理されます。ライブラリには、履歴のサイズを制限するオプション(readlineの専門用語では "stifle")があり、bashはreadline履歴をstifled / unstifledに設定するだけです。たとえば、GNU bashバージョン4.2、ファイルvariables.c、行4443、関数void sv_histsize(char *)を調べると、このコメント(および後続の関数での抑制/抑制解除)全体がわかります。

/ * HISTSIZE変数またはHISTFILESIZE変数が変更された後の処理。
このHISTSIZEに値がある場合(および数値である場合)、履歴を抑制します。それ以外の場合、この変数に値がない場合は
、履歴を圧縮解除します。nameがHISTFILESIZEで、その値が
数値の場合、履歴ファイルを切り捨てて、その
行を超えないようにします。* /

だから、これはトリックをする必要があります:

export HISTSIZE=""

また、これ(あなたが反抗を感じる場合):

export HISTSIZE="GOTCHA"

お役に立てれば。


2
Tuxがあなたを祝福しますように:)
meeDamian 14

17
私はお勧めします:export HISTSIZE = "INFINITE"
AmanicA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.