相同的命令一次又一次地列在我的历史记录中。我怎样才能避免这种情况?我知道可以通过HISTCONTROL但我还没有找到正确的方法。
Isa*_*iah 152
从bash手册页:
组织控制
以冒号分隔的值列表,用于控制命令在历史列表中的保存方式。如果值列表包括
ignorespace,以空格字符开头的行不会保存在历史列表中。值ignoredups导致匹配先前历史条目的行不被保存。的值ignoreboth是ignorespaceand 的 简写ignoredups。一个值erasedups导致在保存该行之前从历史列表中删除与当前行匹配的所有先前行。任何不在上述列表中的值都将被忽略。如果 HISTCONTROL 未设置,或不包含有效值,则 shell 解析器读取的所有行都保存在历史列表中,受制于 HISTIGNORE 的值。不测试多行复合命令的第二行和后续行,并且无论 HISTCONTROL 的值如何都将其添加到历史记录中。
所以把下面这行放在你的~/.bashrc:
export HISTCONTROL=ignoreboth:erasedups
Oli*_*Oli 33
把这个放在你的~/.bashrc:
export HISTCONTROL=ignoredups
Run Code Online (Sandbox Code Playgroud)
您可以改为使用ignoreboth. 这是ignorespaces(以空格开头的命令)和ignoredups(重复)的简写。
我更喜欢ignoredups它自己,因为我发现当我从网站上复制命令时忽略前面带有空格的命令的默认行为很烦人,并且它没有被保存,因为我也无意中复制了一个空格......但是各有千秋。
小智 15
Putting this in ~/.bashrc will apply @alvin's solution across different sessions as wlell
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
Run Code Online (Sandbox Code Playgroud)