在我的系统上,语言环境变量LC_CTYPE
被设置为非法值,这会导致 Linux 系统出现问题。它被设置为:
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
LC_CTYPE=UTF-8
在 Linux 上不是合法值;例如:
$ ssh front1
Linux front1 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64
The programs included with the Debian GNU/Linux system are free software;
…
alex@front1 ~> perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US").
但是LC_CTYPE
首先在哪里设置呢?它不在/etc
或中的任何文件中$HOME
(我做了一个sudo fgrep -ri LC_CTYPE /etc $HOME
)。
我正在使用 iTerm2 作为我的终端应用程序。
答案1
之后一点点 ddg,我来这里是为了这篇博文在 Mac OSX 终端应用程序上正确设置语言环境在Remi Bergsma 的博客。原来 iTerm2 也有这样的设置。禁用它,iTerm2 就不会弄乱语言环境了。
现在设置如下:
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
这也不是很好,因为我将系统设置为瑞士德语。在这方面,普通终端应用程序更好一些:
$ locale
LANG="de_CH.UTF-8"
LC_COLLATE="de_CH.UTF-8"
LC_CTYPE="de_CH.UTF-8"
LC_MESSAGES="de_CH.UTF-8"
LC_MONETARY="de_CH.UTF-8"
LC_NUMERIC="de_CH.UTF-8"
LC_TIME="de_CH.UTF-8"
LC_ALL=