如果該行不是重複的,如何在顯示提示之前附加到 bash 歷史記錄?

如果該行不是重複的,如何在顯示提示之前附加到 bash 歷史記錄?

因為在關閉並且不關閉 gnome 終端時似乎通常不會保存歷史記錄,所以如果該行不是重複的,我想在顯示提示之前附加到 bash 歷史記錄。雖然我export HISTCONTROL=ignoreboth在 bashrc 中擁有,這應該意味著被忽略,但它似乎不起作用,因為我仍然在 bash_history 中得到重複項。那麼如何做到這一點呢?

為了提供進一步的指示,儘管不是解決方案:我認為 $PROMPT_COMMAND 需要有"$(history 1)" (if_not_duplicate) >> ~/.bash_history

如果已經插入了不相鄰的重複項,這將刪除它們。

perl -nei '$H{$_}++ or print' ~/.bash_history 

答案1

您需要修改 PROMPT_COMMAND 和 HISTCONTROL 才能正確執行此操作。以下內容應該適合您:

# The secret sauce is "erasedups," which replaces the default of "ignoredups."
export HISTCONTROL=erasedups:ignorespace

# Write the history to HISTFILE before showing the prompt.
export PROMPT_COMMAND='history -w'

使用此方法需要考慮的兩個注意事項是:

  1. 您將丟失歷史記錄(特別是重複的條目),如果您依賴 HISTTIMEFORMAT 值進行任何操作,這可能會很重要。
  2. 您將持續將 HISTFILE 截斷為 HISTFILESIZE。

這些不一定是問題,只是您應該注意的小問題。

相關內容