就那样吧。我有了思路准备暑假开始干活,用hackrf配合计算机系统实现对应的歌词显示对应的应援色。实现效果:START:DASH!! - µ's [FULL ENG/ROM LYRICS + COLOR CODED] | Love Live! - YouTube
不知道你能不能上Youtube,看到我想整活的呈现效果。这个学期太忙了,根本没有时间来搞我想搞的东西。
你用文本编辑器在bashrc里面搜索一下en_US.UTF-8看看有没有环境变量override。
不行,搜不到
另外我日常用 zsh
(已测试 bash
和 zsh
均为英文)
/etc 和 ~ 下多找找?
麻烦看一下这位博主的文章,我觉得他讲得很清楚:
我看了,但是他似乎没有提到怎么修改
你说终端是无效的指的是,桌面环境下终端模拟器里无效吗?
是的,桌面环境是正常的
那你可能是 shell 的配置上把 LANG 这个环境变量改了
dpkg-reconfigure locales 应该是配置系统全局的语言设置,这个设置中文会使得在 tty 中使用中文。一般这个会设置成英文,因为 tty 中无法显示中文字体。
桌面环境启动的时候会带一个 LANG 环境变量(覆盖系统配置的 locale),以控制运行在桌面环境下的的程序使用对应的语言。
目前来看到桌面环境为止都是对的(你桌面环境是中文),只有终端是英文,说明你的 shell 配置覆盖掉了桌面环境的配置的 LANG
但是我看了 bash
和 zsh
的配置,没看到什么语言相关的
大概就是在这个范围了。
不过我的机子上默认情况下是没有 LC_ALL 这个变量的。但是我看到你的 locale 输出是有这个变量的,鉴于你是手动 export LANGUAGE 都没用,应该是这个 LCD_ALL 被设置为 enUS 的问题。定位下在哪里设置了这个变量
这就是现在主要的问题了,排查了很久一直不知道是哪里影响了 LC_ALL
LC_ALL
优先级是最高的。
用grep
搜索一下吧。
在 etc
里面搜吗?
❯ sudo grep -r -n LC_ALL /etc/
/etc/init.d/x11-common:57: case "$(LC_ALL=C stat -c '%u %g %a %F' "$DIR")" in
/etc/init.d/cron:44: for var in LANG LANGUAGE LC_ALL LC_CTYPE; do
/etc/grub.d/20_linux_xen:36: CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
/etc/grub.d/30_os-prober:162: CLASS="--class $(echo "${LABEL}" | LC_ALL=C sed 's,[[:digit:]]*$,,' | cut -d' ' -f1 | tr 'A-Z' 'a-z' | LC_ALL=C sed 's,[^[:alnum:]_],_,g')"
/etc/grub.d/10_linux:48: CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
在你可能修改过的所有文件里搜索。
这些都不是,从你上面给出的配置看,LC_ALL
被赋值为en_US.UTF-8
了。
破案了,都是 zsh
的锅
~/.zshrc
里面设置了语言为英文
那是你自己配置的锅。这锅 zsh 可不背。
真无语,浪费时间。
不是,我刚换电脑,这应该是zsh的默认配置