Ubuntu如何设置具体的终端配色主题备份并不只看表面做法,关键还要理解相关条件、限制和后续影响。
用gsettings备份GNOME终端配色主题需执行:gsettings list-recursively org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d ")/ > terminal-profile-backup.txt,该命令动态获取默认profile ID并导出全部颜色参数(如foreground-color、background-color、palette等)为纯文本。
Ubuntu 的 GNOME 终端(gnome-terminal)本身不提供“导出主题”的图形按钮,但它的配色配置是通过 dconf 存储的,而 gsettings 是访问它的安全封装。直接备份关键路径即可还原全部颜色设置。
gsettings list-recursively org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d ")/ > terminal-profile-backup.txt
foreground-color、background-color、palette 等)导出为纯文本,含十六进制值和布尔开关b1dcc9dd-5262-4d8d-a863-c897e0d049d6),所以不能硬编码;必须用 gsettings get ... default 动态获取cat terminal-profile-backup.txt 查看,也支持用 gsettings import 恢复(需配合 dconf load,见下节)~/.bashrc 里的 PS1 颜色控制的是 shell 提示符(用户名、路径、$ 符号等),它只是终端显示的一小部分;真正的“终端配色主题”指整个窗口的文本色、背景色、选中色、光标色、16 色调色板(ls、vim 等命令依赖的 palette),这些全由 GNOME Terminal 自身管理,与 shell 无关。
PS1 只影响提示符文字颜色,不影响 ls 输出的绿色/蓝色/红色文件名PS1 也不影响 vim 中语法高亮的颜色映射(它读取的是终端上报的 palette)~/.bashrc,换机器或重装后恢复,ls 依然可能是黑底白字——因为 palette 没动单纯用 gsettings import 无法还原 profile,因为 GNOME Terminal 的 profile 是在 dconf 数据库里以路径形式组织的,且新 profile 创建时会生成新 UUID。正确做法是用 dconf 工具直接写入。
gsettings get org.gnome.Terminal.ProfilesList list,若为空,需先新建一个 profile(手动在 GUI 里新建一次即可)dconf reset -f "/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d ")/"
dconf load "/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d ")/"
killall gnome-terminal-server 强制重载配置要,而且必须一起备份。字体(font-name)、行距(use-system-font)、透明度(background-transparency-percent)都属于同一 profile 配置项,分离备份会导致主题“形似神不似”。
palette 值是 16 个逗号分隔的十六进制颜色(如 '#000000,#cc0000,#4e9a06,...'),顺序固定,错一位整个 ls 颜色就乱list-recursively 默认包含全部,所以放心用原命令