相同的命令在我的历史记录中反复出现。我该如何避免这种情况?我知道可以通过以下方法实现,HISTCONTROL
但我还没有找到正确的方法。
答案1
从bash
手册页中:
组织控制
用冒号分隔的值列表,控制如何将命令保存在历史列表中。如果值列表包括
ignorespace
,则以空格字符开头的行将不会保存在历史列表中。值为ignoredups
会导致不保存与前一个历史条目匹配的行。值为ignoreboth
是ignorespace
和 的 简写ignoredups
。值为erasedups
会导致在保存当前行之前从历史列表中删除与当前行匹配的所有先前的行。任何不在上述列表中的值都将被忽略。如果 HISTCONTROL 未设置,或者未包含有效值,则 shell 解析器读取的所有行都将保存在历史列表中,但要遵守 HISTIGNORE 的值。多行复合命令的第二行和后续行不会进行测试,并且无论 HISTCONTROL 的值如何,它们都会被添加到历史记录中。
因此,将以下行放入您的~/.bashrc
:
export HISTCONTROL=ignoreboth:erasedups
答案2
将其粘贴到您的~/.bashrc
:
export HISTCONTROL=ignoredups
您也可以使用ignoreboth
。这是ignorespaces
(以空格开头的命令) 和ignoredups
(重复) 的简写。
我更喜欢ignoredups
单独使用它,因为当我从网站上复制命令并且由于我不小心复制了一个空格而无法保存时,我发现忽略前面带有空格的命令的默认行为非常烦人......但每个人都有自己的想法。
答案3
将其放入~/.bashrc
将在不同的会话中应用@alvin的解决方案
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
答案4
export HISTCONTROL=erasedups