histsize 和 histfilesize 必须同时设置才有效,ubuntu 默认分别为1000和500;修改 ~/.bashrc 并执行 source 生效,history -w/-r 可手动同步内存与文件,二者不同步是因写入延迟而非配置失效。

HISTSIZE 和 HISTFILESIZE 必须同时设,只改一个没用
Ubuntu 默认只存 1000 条命令(HISTSIZE)到内存、500 条(HISTFILESIZE)到 ~/.bash_history 文件。你看到的“历史变少”,往往是因为两个值不一致,或者终端退出时才写入文件导致误判。
怎么改:只动 ~/.bashrc,别碰 /etc/profile
全局改 /etc/profile 会影响所有用户,还可能被系统更新覆盖;普通用户只需改自己家目录下的 ~/.bashrc。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 用
vim ~/.bashrc或nano ~/.bashrc打开文件 - 搜
HISTSIZE,通常已有类似HISTSIZE=1000的行;没有就加在文件末尾 - 确保同时设置
HISTFILESIZE,例如:HISTSIZE=10000<br>HISTFILESIZE=20000
- 保存后运行
source ~/.bashrc生效 - 验证:执行
echo $HISTSIZE和echo $HISTFILESIZE,两个值都应是你设的数
为什么 history 命令显示的条数 ≠ ~/.bash_history 文件行数
这是最常被卡住的地方:内存缓冲区(HISTSIZE)和磁盘文件(HISTFILESIZE)是两套机制,且 ~/.bash_history 默认只在终端退出时追加当前会话命令。
- 想立刻把当前终端的历史写进文件?运行
history -w - 想从文件重新加载最新历史(比如其他终端刚写入的)?运行
history -r - 如果
~/.bash_history行数远少于HISTFILESIZE,说明还没触发写入——不是配置没生效,是时机未到 - 多个终端同时打开时,彼此看不到对方新输入的命令,除非手动
history -r
容易踩的坑:空格、重复、时间戳这些细节
光调数字不够,几个默认行为会让历史“看起来没存够”:
- 命令前加空格不会被记录 —— 这由
HISTCONTROL控制,默认值含ignorespace;如需取消,加一行HISTCONTROL=ignoredups:erasedups - 重复命令默认只留一份(
ignoredups),想全保留就删掉它 - 时间戳默认不显示,加
HISTTIMEFORMAT='%F %T '才能在history输出里看到时间 -
~/.bash_history是纯文本,可被直接编辑或清空,但修改后需history -r才能进当前会话
真正起作用的是 HISTSIZE 和 HISTFILESIZE 的配对设置,以及你是否理解“内存缓存”和“磁盘落盘”之间存在延迟。其他花哨功能都是锦上添花,先让这两个变量稳住再说。










