因为在关闭 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。
这些不一定是问题,只是您应该注意的小问题。