必须同时设置histsize和histfilesize为相同值(如10000),写入~/.bashrc并执行source ~/.bashrc,否则仅改一个或配置位置错误将导致history命令仍只显示默认1000条。

怎么让 history 记住更多命令而不是默认的 1000 条
Ubuntu 默认只保留 HISTSIZE=1000 条命令在当前会话内存中,HISTFILESIZE=2000 条写入 ~/.bash_history 文件。想改得更多,必须改环境变量,且要区分清楚两者的用途:
-
HISTSIZE控制history命令输出多少行(内存中缓存) -
HISTFILESIZE控制退出时写入~/.bash_history的最大行数(磁盘持久化) - 两者不一致时,
history显示的永远是HISTSIZE条,但文件里可能存得更多或更少
实操建议:
- 编辑
~/.bashrc,添加或修改这两行(比如设为 10000):export HISTSIZE=10000export HISTFILESIZE=10000 - 执行
source ~/.bashrc生效(不用重启终端) - 验证:运行
echo $HISTSIZE和echo $HISTFILESIZE看是否更新
为什么改了 ~/.bashrc 还是没生效
常见原因不是配置错,而是加载时机或覆盖逻辑问题:
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
- 有些 Ubuntu 桌面环境(如 GNOME Terminal)启动时不会自动 source
~/.bashrc,而是读~/.profile—— 可以把 export 行也加到~/.profile末尾 -
~/.bashrc里可能已有重复定义(比如被注释掉的老配置),导致新值被忽略;用grep -n "HISTSIZE" ~/.bashrc检查位置 - 如果用了
zsh(比如 Ubuntu 22.04+ 默认 shell),改~/.bashrc完全无效 —— 要改~/.zshrc,变量名一样,但语法需加export - 某些脚本或 IDE 内置终端(如 VS Code 的 integrated terminal)可能绕过用户 shell 配置,需单独检查其 shell 启动方式
HISTSIZE=-1 是不是真能无限保存
可以设,但不推荐。负值表示“无限制”,但实际受限于内存和磁盘:
-
HISTSIZE=-1会让当前会话历史无限增长,容易拖慢终端响应(尤其频繁使用↑键时 bash 要遍历整个历史列表) -
HISTFILESIZE=-1会让~/.bash_history文件不断追加,几年后可能达 GB 级,history -r或新终端启动变慢 - 真正实用的上限建议:5000–20000 之间,兼顾可查性和性能
- 如果真需要长期归档,不如定期导出:
history > ~/history_$(date +%F).log
时间戳、去重、立即写入这些细节怎么配
光调行数不够,日常用起来顺手还得加几项:
- 加时间戳:
export HISTTIMEFORMAT="%F %T "(注意末尾空格,否则日期和命令粘连) - 去重 + 忽略空格开头命令:
HISTCONTROL=ignoreboth(写进~/.bashrc) - 让每条命令退出后立刻写入文件,避免崩溃丢记录:
export PROMPT_COMMAND="history -a"(追加到历史文件,非覆盖) - 若想每次打开终端都同步最新历史:
export PROMPT_COMMAND="history -a; history -c; history -r"(先追加、清空内存、再重读文件)
这些设置都加在 ~/.bashrc 里,source 一次就全活了。最容易被忽略的是 PROMPT_COMMAND —— 不设它,你关机前没手动 history -w,最后几十条命令就永远消失了。










