如何在 bash 中取得無限的命令歷史記錄?

如何在 bash 中取得無限的命令歷史記錄?

我設定了export HISTSIZE=99999999999999,但這是最好的方法嗎?不知道會不會出現溢出。我正在尋找一種經過測試的可靠方法來消除命令歷史記錄限制。

答案1

真的是不是(很好)有記錄,我猜這個計劃中 99% 的 bash 用戶確實將 HISTSIZE 設定為一個非常大的數字。

在 GNU bash 中,歷史記錄是透過強大的 readline 庫處理的。該函式庫可以選擇是否限制歷史記錄大小(readline 術語中的「stifle」),bash 只是將 readline 歷史記錄設為 stifled/unstifled。如果您查看例如 GNU bash version 4.2,檔案variables.c,第 4443 行,函數 void sv_histsize (char*),您會發現此註解(以及後面函數中的整個令人窒息/不令人窒息的內容):

/* HISTSIZE 或 HISTFILESIZE 變數變更後要執行的操作。
如果此 HISTSIZE 有一個值(並且它是數字),則扼殺歷史記錄。否則,如果該變數沒有值,則
取消歷史記錄。如果名稱為 HISTFILESIZE,且其值為
數字,則截斷歷史檔案以容納不超過那麼多
行。 */

所以這應該可以解決問題:

export HISTSIZE=""

還有這個(如果你感到挑釁的話):

export HISTSIZE="GOTCHA"

希望這可以幫助。

相關內容