不要将当前的bash会话保存到历史logging中
我注意到当打开.bash_history
它只包含我以前的会话中的条目时,似乎当前会话仅附加在退出。 有没有办法阻止当前会话保存? 即使崩溃bash
是一个选项,如果知道如何做到这一点。 我发现我可以kill -9
这个过程,但是如果有更好的方法我很想知道。
也许比崩溃的bash更优雅的是使用history -c
命令清除当前会话的历史logging。 那么,没有什么可以拯救的(甚至从历史中抹去)。
取消设置$HISTFILE
variables
$ 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的命令。 这将防止这条线也出现在你的历史。