我使用 Linux Mint 17.1 Rebecca 大约 2 天,不小心在终端中输入了密码,该密码现在显示在我之前输入的命令的历史列表中。
我想彻底清除终端历史记录。我尝试在终端中使用以下命令,我认为这些命令会永远清除历史记录,但它们不会:
history -c
reset
tput reset
上面的命令“将”清除终端中的历史记录,但是当我退出并打开一个新的历史记录时,我以前的所有历史记录仍然存在,并且可以使用 -history 命令再次列出,也可以通过按键盘上的向上箭头来再次列出。我不希望这种情况发生,直到我完全清除我的历史记录,然后我想继续使用它。
我怎样才能完全清除我的终端历史记录 - 永远并重新开始?
请注意:我不想在不保存历史记录的情况下退出终端,只是在这种情况下永远清除它。
答案1
reset
或者tput reset
只对终端进行操作。历史记录完全由 shell 管理,不受影响。
history -c
清除当前 shell 中的历史记录。如果您刚刚输入密码并且尚未退出该 shell 或显式保存其历史记录,这就足够了(但有点过分)。
当您退出 bash 时,历史记录将保存到历史文件中,默认情况下位于.bash_history
您的主目录中。更准确地说,当前会话期间创建的历史记录将附加到文件中;已经存在的条目不受影响。要使用当前 shell 的历史记录覆盖历史记录文件,请运行history -w
.
.bash_history
您可以在编辑器中打开并删除不想保留的行,而不是删除所有历史记录条目。您也可以在 bash 中执行此操作,但不太方便,方法是使用history
显示所有条目,然后history -d
删除不需要的条目,最后history -w
保存。
请注意,如果您有多个正在运行的 bash 实例已读取密码,则每个实例都可能会再次保存该密码。在最终从历史文件中清除密码之前,请确保已从所有正在运行的 shell 实例中清除该密码。
请注意,即使在编辑了历史文件之后,您的密码也可能仍然存在于磁盘上某个早期版本的文件中。它无法再通过文件系统检索,但仍然可以(但可能不容易)通过直接访问磁盘来找到它。如果您在其他地方使用此密码并且您的磁盘被盗(或有人访问了该磁盘),这可能会出现问题。
答案2
我尝试过history -c,但是一旦我们退出并重新打开,历史记录就会回来。这对我有帮助。
cat /dev/null > ~/.bash_history && history -c && exit
这会清除历史文件中保存的历史记录以及当前会话中的历史记录(以便bash
退出时不会保存到文件中)。然后它退出外壳。下一个 shell 会话将没有历史记录。
答案3
不要删除所有历史记录条目,而是在终端中输入以下命令:
history -c
(用于删除历史记录)history -w
(保存历史记录)
答案4
作为一个面临同样问题的新手,我采取了相当残酷的权宜之计,即删除并重新创建历史文件:-
rm .bash_history
touch .bash_history
它对我有效,但没有产生我所知道的任何令人不快的副作用。