需要清空 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可防止恢复。
参考资料
- [1] Bash History Builtins (Bash Reference Manual)(builtins)
- [2] Bash History Facilities (Bash Reference Manual)(facilities)
- [3] bash(1) — Debian bookworm(bash1)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。