终端配色修改的是终端模拟器自身的配置文件或设置界面,而非shell配置文件;gnome-terminal在图形界面中设置,alacritty改~/.config/alacritty/alacritty.yml,wezterm改~/.wezterm.lua。

终端配色改的是哪个文件?
Linux 终端本身不直接存配色方案,真正起作用的是终端模拟器(比如 gnome-terminal、konsole、alacritty 或 wezterm)各自的配置。你改错地方,重启也没用。
常见误区是去动 ~/.bashrc 或 /etc/profile —— 这些只影响 shell 提示符颜色(比如 PS1),不影响 ls、vim、man 等命令输出的底色和文字色。
-
gnome-terminal:配色在「首选项 → 配置文件 → 颜色」里点选,不生成独立文件;导出用gsettings get org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \')/ palette -
alacritty:改~/.config/alacritty/alacritty.yml里的colors:块 -
wezterm:改~/.wezterm.lua中的colors = { ... } - 如果你用
tmux,它会继承外层终端配色,但可以额外用set -g default-terminal "screen-256color"和tmux -u确保 256 色生效
ls 和 vim 颜色为啥没跟着终端变?
因为它们不读终端模拟器的配色,而是靠环境变量 + 自身配置识别“当前终端支持什么颜色”+“该用什么颜色画什么类型文件”。终端改了,它们可能还卡在旧假设里。
- 检查是否启用颜色:
ls --color=auto是默认行为,但若$LS_COLORS为空或被清空,ls就不染色;运行dircolors -p > ~/.dircolors生成模板再source ~/.dircolors可修复 -
vim依赖$TERM值(如xterm-256color)和:set t_Co?返回值;如果返回t_Co=8,说明它只认为终端支持 8 色 —— 此时要确认启动 vim 前$TERM是否被错误覆盖(比如某些 tmux 或 ssh 场景) -
man用LESS_TERMCAP_*环境变量控制高亮,不是终端配色;需在~/.bashrc里显式设置,例如:export LESS_TERMCAP_mb=$'\e[1;31m'
怎么让配色在 SSH 远程时也生效?
本地终端改好了,连远程服务器却还是黑白或错色,问题不在服务器,而在连接过程丢掉了颜色能力声明。
- 确保本地终端报告正确的
$TERM:SSH 默认会传递,但如果远程 shell 启动脚本(如/etc/profile)重设了$TERM,就可能被覆盖成vt100或dumb;检查远程执行echo $TERM,应为xterm-256color或类似 - 强制声明终端类型:SSH 连接时加参数
ssh -o "SetEnv=TERM=xterm-256color" user@host,或在~/.ssh/config里写SetEnv TERM=xterm-256color - 某些老旧服务器的
ncurses数据库缺失 256 色定义,运行infocmp xterm-256color报错的话,得手动安装ncurses-term包(Debian/Ubuntu)或ncurses-base(RHEL/CentOS)
自定义 ANSI 16 色 vs 真·256 色的区别
别被“256 色支持”误导 —— 大部分终端配色模板只改前 16 色(ANSI 标准色),而 ls、grep、git 默认只用这 16 色;所谓“256 色主题”,其实是终端模拟器内部把这 16 色映射到更丰富的调色板,但程序本身并不感知。
- 修改 ANSI 16 色:对
alacritty是改colors.normal.black到.white;对wezterm是colors.ansi数组;改完后ls文件名颜色立刻变化 - 想让
vim使用更多颜色(比如语法高亮用上百种),必须启用termguicolors(要求终端支持 truecolor),并确保$TERM设为alacritty、wezterm或xterm-direct;否则 vim 仍被锁在 16/256 色模式 - truecolor 不是所有终端都稳:某些 tmux 版本 + 老版本终端组合下,
termguicolors可能导致闪烁或色块错位,建议先在裸终端验证再进 tmux
最常被忽略的一点:配色方案生效 ≠ 所有程序都按你想的方式染色。每个程序有自己的颜色逻辑层,终端只提供画布,不负责执笔。改完记得分别验证 ls、vim、grep --color 和 man,别只看 shell 提示符。










