首页 > Sysadmin > 正文

Linux 清空历史命令记录:4 种方法对比

huyuanwen 2026-11-02 Sysadmin

需要清空 bash 历史记录,以下方法覆盖内存和文件层面,按场景选择。

history -c:清空当前会话内存

history -c 是 bash 内置命令,直接清空当前 shell 会话中的命令历史列表 [1]。

history -c

效果仅限于当前会话。如果当前会话退出时 HISTFILE 仍指向 ~/.bash_history,退出前内存里的历史会被重新写入文件,清空失效 [2]。

HISTFILESIZE=0 + history -w:清空历史文件

先设置 HISTFILESIZE=0,再调用 history -w 强制写入,会把历史文件截断为 0 字节 [3]。

HISTFILESIZE=0
history -w

HISTFILESIZE 的作用是限制历史文件最大行数;赋值后 bash 会立即截断文件,退出时也会按此大小截断 [2]。

unset HISTFILE:阻止写入历史文件

取消 HISTFILE 变量后,shell 退出时不会将历史写入磁盘,文件原内容保留 [3][2]。

unset HISTFILE
history -c

适用于临时会话,但不会删除已有的 ~/.bash_history。

直接清空或删除 ~/.bash_history

使用重定向清空文件,或直接删除,重启后重建 [3]。

# 清空内容
: > ~/.bash_history
# 或直接删除
rm -f ~/.bash_history

rm -f 后文件消失,但当前会话内存中的历史仍存在,配合 history -c 才彻底。

排错速查表

现象 原因 处理
执行 history -c 后历史还在 非交互 shell 默认不加载历史 在交互式终端执行
HISTFILESIZE=0 后历史仍在 未执行 history -w 补跑 history -w
删除 ~/.bash_history 后 history 仍有输出 内存中未清空 先 history -c 再删文件
新开的终端历史又出现 .bashrc 或 profile 里有 history -r 检查启动文件

附录

  • 测试机:WSL2 Ubuntu 24.04.4 LTS
  • 内核:Linux 6.6.114.1-microsoft-standard-WSL2
  • 测试日期:2026-11-02
  • 观察结果:history -c 在当前会话中将 history 计数归零;HISTFILESIZE=0 + history -w 将 ~/.bash_history 截断为 0 字节;unset HISTFILE 后退出不再写入;rm -f ~/.bash_history 删除文件后配合 history -c 可防止恢复。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。