GNU/Linux >> Linux の 問題 >  >> Linux

bash の履歴リストのサイズを 5000 行以上に設定する方法はありますか?

これは履歴をロードする実際のコードです (bashhist.c から) 260行目あたり):

/* Load the history list from the history file. */
void

load_history ()
{
  char *hf;

  /* Truncate history file for interactive shells which desire it.
     Note that the history file is automatically truncated to the
     size of HISTSIZE if the user does not explicitly set the size
     differently. */
  set_if_not ("HISTSIZE", "500");
  sv_histsize ("HISTSIZE");

  set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE"));
  sv_histsize ("HISTFILESIZE");

  /* Read the history in HISTFILE into the history list. */
  hf = get_string_value ("HISTFILE");

  if (hf && *hf && file_exists (hf))
    {
      read_history (hf);
      using_history ();
      history_lines_in_file = where_history ();
    }
}

HISTSIZE の値の場合 そして HISTFILESIZE 設定されている場合、それらが使用されます。

入力/行編集と履歴を実際に処理するライブラリである Readline 履歴バッファがどれだけ大きくなるかを制限する機能を提供します。しかし、Bash は、少なくとも私が見つけた限りでは、これ以上の値が無視されるという厳しい上限を設けていません。

編集

コメントから readline まさに犯人でした。私は(かなりばかげて)機能パラメータを見ていました:

<ブロック引用>

inputrc ファイルから読み取ることができる history-size という変数があります。この変数は、履歴リストに保存される履歴エントリの最大数を設定します。ローカルのinputrcファイルで値を確認して、5000に等しいことを確認しました。より大きな値に設定すると、問題が解決しました。


HISTSIZE が最初に設定されたときに履歴が切り捨てられるため、以前に ~/.bashrc で 5000 に設定されている場合、または /etc のシステム全体の bashrc で 、それらをコメントアウトする必要があります。


HISTFILESIZE の両方を試してください および HISTSIZE .


Linux
  1. これらのヒントを使用して、Bashの履歴をより便利にします

  2. コマンドラインでの毎日のBashのヒント

  3. バッシュ‘?

  1. ずっとUTF-8

  2. bash で、最後の stdout をエコー/印刷する方法はありますか? stdout が割り当てられる変数はありますか?

  3. Bashでコマンドプロンプトの色を設定するには?

  1. Unixでその場で履歴にアクセスする方法は?

  2. SELinuxを学ぶ最良の方法は何ですか?

  3. 履歴に保存せずに bash でコマンドを実行する