linux的locale中英文设置

以前的时候我会面临一个两难的问题,如果将语言设置成中文,那么有一些命令输出的中文信息不太好懂也不容易搜索,如果设置成英文,那么整个桌面环境就会变成英文,emmm,可读性又不太好,今天终于领悟到了可以通过区分登录 shell 和非登录 shell 的方式完美解决

一开始 Gemini 建议我单独设置LC_MESSAGE成英文,但经过测试发现 gnome 的显示(比如说设置界面)也是依赖于这个环境变量的

还记得 linux 的 shell 分成两种吗,一种是登录 shell,一种是非登录 shell,登录 shell 负责加载桌面环境,那我们直接将语言默认设置成中文,然后让 shell 检测到自己不是登录 shell 的时候将语言设置成英文不就好了

我使用的是fish,就可以执行命令

1
set -Ux LC_ALL "zh_CN.UTF-8"

然后在配置文件~/.config/fish/config.fish中添加

1
2
3
if not status is-login
set -gx LC_ALL "en_US.UTF-8"
end