ubuntu终端默认仅保留512行输出,需在gnome terminal的profile preferences→scrolling中取消unlimited并设置具体数值(如1000),该配置修改scrollback缓冲区而非histsize。

Ubuntu 终端默认只保留 512 行输出,超出部分会被丢弃;要设成具体数值(比如 1000 行),不能只改 HISTSIZE,得调终端模拟器的 scrollback 缓冲区。
GNOME Terminal 的 scrollback 行数怎么设成固定值
这是最常遇到的场景:你执行了长命令(如 journalctl -u docker),滚动时发现往上翻不到开头——不是命令没输出,是终端根本没存那么多行。GNOME Terminal(Ubuntu 默认终端)用的是 scrollback 缓冲区,和 history 命令无关。
- 右键终端任意空白处 → Profiles → Profile Preferences → Scrolling 标签页
- 取消勾选 Unlimited,勾选 Limit scrollback to,输入具体数字(如
1000) - 该设置立即生效,无需重启终端,但只影响新打开的标签页(已有标签页需关闭重开)
- 注意:这个值存在配置文件里,路径是
~/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml,对应字段是scrollback_lines,类型为 int
为什么改了 HISTSIZE 没用
HISTSIZE 控制的是 history 命令能查到的「命令历史」条数,不是屏幕输出缓冲。两者完全独立:
-
HISTSIZE=1000:你敲过的第 999 条命令还能用!999或上下箭头调出来 -
HISTFILESIZE=2000:~/.bash_history文件最多存 2000 条,关机后不丢 - 但
ls /usr/bin | head -n 2000输出的前 500 行,在默认设置下你根本滚不到——因为 scrollback 只有 512 行 - 所以别在
~/.bashrc里反复改HISTSIZE试图解决「看不到旧输出」问题
命令行批量设置 scrollback 行数(适合脚本或远程部署)
GNOME Terminal 不提供直接命令行参数修改 scrollback(--geometry 只控窗口尺寸),但可通过 dconf 工具写入配置:
- 查看当前值:
dconf read /org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.terminal.profiles-list default | tr -d \")/scrollback-lines - 设为 1500 行:
dconf write /org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.terminal.profiles-list default | tr -d \")/scrollback-lines 1500 - 注意:必须确保目标 profile 是 active 的,默认 profile 名可能含 UUID,上面命令自动取值;如果失败,先用
gsettings get org.gnome.terminal.profiles-list list确认 - 改完后新开终端才生效,已运行的终端进程不受影响
其他终端模拟器的 scrollback 设置差异
如果你换用了 xfce4-terminal、konsole 或 tilix,路径和参数名不同,但逻辑一致:
-
xfce4-terminal:设置 → 选项 →Scrollback lines(直接填数字) -
konsole:设置 → 配置 Konsole → 外观 → 历史记录 →Keep output history设为固定值 -
tilix:偏好设置 → 配置文件 → 滚动 →Scrollback lines,支持0表示 unlimited - 关键区别:XShell、MobaXterm 等远程客户端的 scrollback 是客户端本地设置,和 Ubuntu 本身无关;改服务端配置无效
真正容易被忽略的是:scrollback 行数设得过大(比如 10000)会导致终端内存占用明显上升,尤其在长时间运行大量输出的程序(如 tail -f)时;建议按需设,别无脑填 unlimited。











