web-dev-qa-db-ja.com

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

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

54
user55542

それは確かにnot(よく)文書化されており、この計画のbashユーザーの99%はHISTSIZEを非常に大きな数に設定していると思います。

GNU= bashの履歴は、強力なreadlineライブラリを通じて処理されます。ライブラリには、履歴のサイズ(readline専門用語の「窒息」)を制限するオプションがあるかどうかにかかわらず、bashは単にreadline履歴をstifled/unstifled。たとえば、GNU bashバージョン4.2、ファイルvariables.c、行4443、関数void sv_histsize(char *)を調べると、このコメント(および全体の窒息/次の関数で混乱を解消する):

/ * HISTSIZEまたはHISTFILESIZE変数が変更された後の処理。
このHISTSIZEに値があり(数値の場合)、履歴を抑制します。それ以外の場合、この変数に値がない場合、
歴史を解き放ちます。名前がHISTFILESIZEで、その値が
数値。履歴ファイルを切り捨てて、その数以下を保持します
行。 * /

したがって、これでうまくいくはずです:

export HISTSIZE=""

そしてこれ(もしあなたが反抗的であると感じたら):

export HISTSIZE="GOTCHA"

お役に立てれば。

70
Epikuros