在什么情况下,用户不让外壳程序将其命令记录到历史记录中?


18

如果我加export HISTCONTROL=ignorespace.bashrc,bash将不记录其面前有空格到历史上的任何命令。但是我不知道在什么情况下它会有用。谁能举一些例子?

Answers:


32

如果您的命令包含密码或其他敏感信息


4
@acgtyrant,则您再也不会输入带有密码的命令。这个想法是,如果您在命令行上提供密码,只需在命令前放置一个空格,它将不会被记录到HISTFILE
Ulrich Dangel 2013年

3
mysql命令可以接受您用来连接数据库的用户的密码,这里太多了。@Ulrich Dangel提出的观点很明确。如果您输入带有密码的命令,请不要将其保留在历史记录中。
slm

5
我还要补充一点,当您和管理员时,您通常不希望历史记录存在,因为如果攻击者进入系统,您会留给他一些线索,包括盒子上的内容以及命令的类型通常在盒子上运行。
slm

1
如果您没有任何包含敏感信息的命令,那么您就不是该功能的目标受众。并非每个用户都使用程序中的每个功能。(这就是程序具有“功能蠕变”的原因:每个人都使用许多功能,但使用另一种功能,并想知道其他所有无用的东西是干什么的。)
Kaz 2013年

1
请记住,命令行参数通常在ps中或通过中可见/proc。有些系统也会使环境对其他用户可见。在tmpfs上的OTOH模式0700文件没有这些问题。
derobert

26

另一种用法是用于您不想意外重复的命令,例如rm -rf *Enter当我从历史记录中检索到的命令不是我要查找的命令时,我会广泛使用历史记录,有时会偶然被击中。当然,真正的解决方案是在执行命令之前始终仔细阅读命令。但是由于有点笨拙,我还是希望在我的历史记录之外保留一些特别具有破坏性的命令,以作为额外的预防措施。


14
我还要补充一点,即使我忘记添加空格,也发现进一步忽略一些危险命令非常方便HISTIGNORE=" *:rm -f*:rm -r*:*--force*"。这样可以防止rm -f并将rm -r其保存在历史记录以及其中的任何内容中--force
PetrPudlák13年

这是一个/真正的解决方案。不要乱扔刀子,说真正的解决方案是不要与刀子戳自己。正如古老的谚语所说:“你不能在河里除草”-这意味着不要清洗河,而要停止向河里倒垃圾。
ctrl-alt-delor 2014年

6

我的一位以前的同事这样做与大多数cdls命令,只记录“有用”的命令。


3
如果没有这样做,我几乎永远不会在工作中运行nethack ...(或顶部,或顶部...)
lotsoffreetime 2013年

事实上,有人可以添加export HISTCONTROL=ingoredups.bashrc告诉bash不能存储复本因此创造历史更加清晰。您可以阅读这篇文章
acgtyrant

2

数据隐私。执法部门一旦打破您的门,您可能不希望他们发现残留物。

  • 从那里获取最新的pron ^ Wwarez
  • 您最近翻录了哪些电影并上传到torrent中
  • 通过参数传递给加密/解密程序的密码

严重的是,它可能等同于浏览器中严格的隐私设置,从而阻止了它记录冲浪历史记录。


0

如果版本控制为.bash_history,则这是将某些命令标记为“特殊”的有用方法。与history-search- *结合使用,这是一种简单地按Space+ m+ Up+ Enter运行make --directory ~/dev/tilde cleanSpace+ e+ Up+ Enter运行editor ~/.bash_history的方式,我都使用这两种方式来维护Bash历史记录文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.