如果该行不是重复的,如何在显示提示之前将其附加到 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。

这些不一定是问题,只是您应该注意的小问题。

相关内容