不要将当前的bash会话保存到历史logging中

我注意到当打开.bash_history它只包含我以前的会话中的条目时,似乎当前会话仅附加在退出。 有没有办法阻止当前会话保存? 即使崩溃bash是一个选项,如果知道如何做到这一点。 我发现我可以kill -9这个过程,但是如果有更好的方法我很想知道。

也许比崩溃的bash更优雅的是使用history -c命令清除当前会话的历史logging。 那么,没有什么可以拯救的(甚至从历史中抹去)。

取消设置$HISTFILEvariables

 $ unset HISTFILE 

如果HISTFILE未设置,或者历史文件不可写入,则不保存历史logging。
http://www.faqs.org/docs/bashman/bashref_106.html

还有另外一个选项,类似于history -c ,但不会擦除当前会话之前的任何内容。

这是history -r ,从HISTFILE重新载入历史logging,就像刚刚login一样。

我不知道这是否可行,或者在4.3.11以前的任何bash版本中可用,但是我认为将它包含在列表中是有用的。

下面是一个显示这个命令和-c之间的区别的例子:

 user@host:~$ # I Just logged in user@host:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 4679 2014-08-23 17:15:29 # Previous session 4680 2014-08-23 17:15:33 # Still the previous session 4681 2014-08-23 17:15:37 # note the datetime 4682 2014-08-23 17:15:44 exit 4683 2014-08-23 17:17:25 # I Just logged in 4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session user@host:~$ # This is a secret command, so I need to remove the traces of this session user@host:~$ history -r user@host:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 6242 2014-08-23 17:15:29 # Previous session 6243 2014-08-23 17:15:33 # Still the previous session 6244 2014-08-23 17:15:37 # note the datetime 6245 2014-08-23 17:15:44 exit 6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command user@host:~$ history -c # instead if I issue history -c user@host:~$ history # everything disappears 5248 2014-08-23 17:23:13 history # everything disappears user@host:~$ 

我知道这是一个古老的线索。 只是想补充完成:

如果您只是想要保存特定的命令,请检查是否设置了HISTCONTROLvariables:HISTCONTROL = ignoreboth或HISTCONTROL = ignorespace

每个以前导空格开头的命令都不会放在历史logging中。

只是我2美分。

应该这样做:

 HISTFILE= 

取消设置HISTFILE。

以下为我工作。

  export HISTFILE=/dev/null 

请注意,它前面有一个空格。 大多数现代发行版不会添加在打开历史logging后input的命令。 这将防止这条线也出现在你的历史。