最彻底清除Linux命令历史的方法是删除~/.bash_history文件并执行history -c,因为该文件存储所有持久化命令记录,而history -c仅清空当前会话内存缓存;二者需配合使用,否则其他终端退出时可能重新写入旧记录。

直接删除 ~/.bash_history 文件最彻底
命令历史实际就存放在用户主目录下的 ~/.bash_history 文件里。当前会话还没写入磁盘的历史,是保留在内存中的;而之前退出终端时保存的记录,全在这个文件里。
清空它,等于抹掉所有已持久化的命令记录。
执行以下命令即可:
rm ~/.bash_history
注意:rm 不会提示确认,删完就没了。如果想留个备份,可以先:
mv ~/.bash_history ~/.bash_history.bak
history -c 只清当前会话,不碰磁盘文件
运行 history -c 会把当前 shell 进程里缓存的历史列表清空,但 ~/.bash_history 文件内容完全不受影响。下次新开终端,所有老命令还会加载回来。
常见误解是以为执行了这个就“全清了”,其实只是“暂时看不见”。真正要让新终端也看不到,必须配合 history -w(把当前空历史写回文件)或者直接删文件。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
history -c→ 清内存缓存 -
history -w→ 把当前缓存(此时为空)写入~/.bash_history - 二者合用等价于:清空内存 + 覆盖写入空文件
为什么不能只靠 history -d 或循环删除?
history -d 是按索引删除单条记录,比如 history -d 100 删第 100 条。想清全部就得遍历所有行号——但行号会随删除动态变化,容易漏删或报错 history: history position xxx not found。
更麻烦的是,history -d 同样只操作内存,不改 ~/.bash_history。即使你写脚本硬刚,也绕不开磁盘文件这关。
所以别折腾循环,直接删文件或覆盖写空更稳。
清空后新开终端仍显示旧命令?检查 HISTFILE 和多终端同步问题
删完 ~/.bash_history,如果新打开的终端依然有历史,可能是以下原因:
-
HISTFILE环境变量被改过,比如设成了别的路径:echo $HISTFILE看是否还是~/.bash_history - 其他终端窗口还没关闭,它们有自己的历史缓存,且会在退出时把缓存写回文件(可能覆盖你刚删掉的内容)
- 某些发行版或桌面环境(如 GNOME Terminal)会自动恢复上一次会话的历史,可尝试禁用会话恢复功能
稳妥做法:关掉所有 bash 终端,再删文件,最后新开一个。
删文件是最直接的方式,但得记得关掉所有终端再操作,不然容易被残留会话悄悄写回去。

















