为什么删除 bash 历史记录还不够?

为什么删除 bash 历史记录还不够?

我曾经认为删除我的 bash 历史记录就足以清除我的 bash 历史记录,但昨天我的猫在键盘的右侧乱搞,当我回到电脑时,我看到了一个月前输入的内容,然后我开始疯狂地按下所有按键,寻找可能触发它的原因。事实证明,即使删除 .bash_history 后,UPARROW 键也会显示我的 bash 历史记录。

如何才能真正删除我的 bash 历史记录?

答案1

在某些情况下(某些 bash 版本),执行以下操作:

$ history -c; history -w

或者简单地

$ history -cw

将清除内存中的历史记录(向上和向下箭头将没有要列出的命令),然后写入$HISTFILE文件(如果$HISTFILE被运行的 bash 实例截断)。

有时 bash 选择不是$HISTFILE即使histappend选项未设置并$HISFILEZIZE设置为 0,也会截断文件。

在这种情况下,nuke 选项始终有效:

history -c; >$HISTFILE

清除内存中记录的命令历史列表以及以前记录到文件中的所有命令。这将确保正在运行的 shell 在内存或磁盘中没有记录历史记录,但是,其他正在运行的 bash 实例(历史记录处于活动状态)可能具有从$HISTFILEbash 启动时(或history -r执行 a 时)读取的命令的完整副本。

如果是要求当前会话的任何其他内容(没有新命令)都不会写入历史文件,然后,unset HISTFILE将阻止任何此类日志记录。

答案2

bash如果 shell 变量在退出HISTFILE时设置为文件名,则内存中有一个会话历史记录,该历史记录将写入文件。bash

如果删除 指向的文件HISTFILE,取消设置该变量,然后退出bash,则该 shell 会话将不会留下任何持久历史记录。

未能取消HISTFILE设置变量但删除文件只会清空持久历史记录,但当前会话的历史记录将在 shell 退出时保存。

答案3

我遇到了类似的问题,执行以下两个命令删除了 bash 历史记录

  1. $ history -c
  2. $ cat /dev/null > ~/.bash_history

接下来,确保退出所有终端并启动一个新终端,并且当您按向上箭头按钮时,您不应该看到任何历史命令。

答案4

打开文件管理器并勾选显示隐藏文件。在您的主文件夹中查找.bash_history。使用文本编辑器打开它。删除文件内容。任务完成。

相关内容