Linux 彻底清空历史命令 & 恢复历史命令(完整版、重启永久生效)
一、彻底删除所有历史命令(无痕、重启不恢复)
普通 history -c 只能临时清空当前终端,重启后历史会还原。下面是服务器彻底无痕、永久清空历史的完整操作:
- 清空当前终端内存历史 + 磁盘历史文件
bash
history -c
> ~/.bash_history
- 关闭系统历史记录功能(从根源禁用,重启不保存)
bash
# 当前用户永久禁用
echo 'export HISTSIZE=0' >> ~/.bashrc
echo 'export HISTFILESIZE=0' >> ~/.bashrc
echo 'unset HISTFILE' >> ~/.bashrc
# 全局所有用户永久禁用
echo 'export HISTSIZE=0' >> /etc/profile
echo 'export HISTFILESIZE=0' >> /etc/profile
echo 'unset HISTFILE' >> /etc/profile
# 立即生效
source ~/.bashrc
source /etc/profile
- 锁定历史文件(防止系统自动恢复、写入)
bash
chattr +i ~/.bash_history
- 验证
输入history无任何输出,重启服务器后依然为空,即为彻底删除完成。
二、恢复系统历史命令(恢复如初、正常记录操作)
如果后续需要正常保存、查看、留存命令历史,执行以下全套恢复操作:
- 第一步先解除文件锁定(必须执行)
bash
chattr -i ~/.bash_history
- 清理所有禁用历史的配置
bash
# 清理用户配置
sed -i '/HISTSIZE=0/d' ~/.bashrc
sed -i '/HISTFILESIZE=0/d' ~/.bashrc
sed -i '/unset HISTFILE/d' ~/.bashrc
# 清理全局配置
sed -i '/export HISTSIZE=0/d' /etc/profile
sed -i '/export HISTFILESIZE=0/d' /etc/profile
sed -i '/unset HISTFILE/d' /etc/profile
- 恢复系统默认历史记录规则
bash
echo 'export HISTSIZE=1000' >> ~/.bashrc
echo 'export HISTFILESIZE=2000' >> ~/.bashrc
source ~/.bashrc
source /etc/profile
- 验证恢复
随便执行ls、pwd等命令,再输入history可以正常查看记录,重启后依旧保存历史,即完全恢复如初。
重要注意事项
- 历史清空后,旧命令记录无法找回,只能恢复后续新命令的记录;
- 本方案兼容麒麟系统、欧拉、CentOS、Ubuntu、昇腾服务器所有 Linux 环境;
- 修改
/etc/profile全局配置需要 root 权限; - 所有操作可逆、无系统损坏、不影响业务运行。
极简一键命令(收藏可用)
彻底清空禁用历史
bash
history -c && > ~/.bash_history && echo 'export HISTSIZE=0;export HISTFILESIZE=0;unset HISTFILE' >> ~/.bashrc && echo 'export HISTSIZE=0;export HISTFILESIZE=0;unset HISTFILE' >> /etc/profile && chattr +i ~/.bash_history && source ~/.bashrc && source /etc/profile
恢复历史记录
bash
chattr -i ~/.bash_history && sed -i '/HISTSIZE=0/d;/HISTFILESIZE=0/d;/unset HISTFILE/d' ~/.bashrc /etc/profile && echo 'export HISTSIZE=1000;export HISTFILESIZE=2000' >> ~/.bashrc && source ~/.bashrc && source /etc/profile