如何使 Bash 刷新命令历史记录可以被清除?

6 bash command-history logout

我不小心在命令行上输入了密码,需要清除 Bash shell 历史记录。使用echo "" > ~/.bash_history.

.bash_logout为了将来以防万一,我添加了相同的内容。但是,当我在注销/登录后检查历史记录时,我输入的最后一个命令仍然存在于历史记录文件中。更准确地说,存在两个命令:我输入的最后一个命令和exit注销时的命令。

如何让 Bash 将命令历史记录刷新到文件中,以便我可以在注销时清除它?

Gil*_*il' 7

Bash 不会将其历史记录写入历史文件,直到它退出或您显式调用history -w. 因此,如果您刚刚在当前 shell 的历史记录中添加了您的密码,那么它还没有被写入.bash_history,它只是坐在内存中。您可以运行fc -l以查看最近命令的列表,然后history -d删除条目。

$回声箭鱼
旗鱼
糟糕,那是我的密码!
$ fc -l -2
第1234章
1235回声箭鱼
$历史-d 1235
$ fc -l -3
第1234章
1235 fc -l -2
1236 历史-d 1236

如果您已经编写了历史文件(例如,因为您有history -winPROMPT_COMMAND或调试陷阱),那么请执行此操作并进行编辑.bash_history。

如果您想完全忘记当前 shell 的历史记录,请取消设置HISTFILE并确保它在 shell 退出之前保持未设置状态。如果您想忘记到目前为止的当前历史记录但开始记录,您可以调用history -c。如果您想忘记除最后 3 个历史条目之外的所有历史条目,请设置HISTFILE=3then(在单独的命令行上)将其设置回您通常的值。


Kip*_*p K 1

我在编辑注销时也遇到了问题(我制作了一个备份脚本,将我的数据备份到服务器)。我发现这个链接很有帮助,但它适用于 ubuntu。

https://askubuntu.com/questions/293312/execute-a-script-upon-logout-reboot-shutdown-in-ubuntu