你能防止命令被记录到Bash Shell命令历史中吗?

64

有什么方法可以防止命令被添加到Bash shell的命令历史中吗?

我想要防止某些“危险”的命令被添加到历史记录中,比如 "rm -rf ~/some/dir" 等,这样通过按上箭头访问之前的命令时,就无法访问这些命令。通过这种方式,就不可能在不经意间重复执行其中一个危险命令。

我之所以这样问,是因为我经常使用上箭头来访问shell历史记录中的先前命令,而且我经常发现自己准备按下回车键来执行我认为是正确命令的操作,随后才意识到自己即将执行一些愚蠢/烦人/危险的操作。我不喜欢 rm 等命令在我的shell历史记录中存在,等待我去执行它们!

(注意:我知道可以在HISTIGNORE中设置模式,但很好的做法是可以针对每个命令单独应用的。除非我错过了使用HISTIGNORE实现此目标的聪明方法 ?)


1
根据已删除的答案,值得使用控制-R进行反向历史类型搜索,而不是使用向上箭头。这有助于减少此类错误的发生,尽管仍然值得从历史记录中抑制某些内容。 - Craig Ringer
2个回答

75

在新版本的Bash中,您只需在命令开头添加一个空格即可。 :) 如果默认情况下无法正常工作,请将[ \t]*添加到HISTIGNORE中。(如评论所述。谢谢)


8
如果默认情况下无法正常运行,请将 [ \t]* 添加到 HISTIGNORE 中。 - Boden

46
ignorespace添加到HISTCONTROL环境变量中。这样,以空格开头的命令行就不会被记录在你的历史记录中了。请保留原有HTML标签。

20
多个HISTCONTROL选项可以通过用冒号分隔它们来设置,例如:export HISTCONTROL=ignoredups:ignorespace - BlackShift

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接