因為在關閉並且不關閉 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'
使用此方法需要考慮的兩個注意事項是:
- 您將丟失歷史記錄(特別是重複的條目),如果您依賴 HISTTIMEFORMAT 值進行任何操作,這可能會很重要。
- 您將持續將 HISTFILE 截斷為 HISTFILESIZE。
這些不一定是問題,只是您應該注意的小問題。