在 macos 上,LC_CTYPE 设置为错误值 - iTerm2 在哪里更改?

Ale*_*war 4 shell locale iterm2 macos

在我的系统上,语言环境变量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=
Run Code Online (Sandbox Code Playgroud)

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").
Run Code Online (Sandbox Code Playgroud)

但是首先在哪里LC_CTYPE设置?它不在/etc$HOME(我做了一个sudo fgrep -ri LC_CTYPE /etc $HOME)中的任何文件中。

我使用 iTerm2 作为我的终端应用程序。

Ale*_*war 5

经过一番ddg 之后,我来到了Remi Bergsma 博客上的博客文章在 Mac OSX 终端应用程序正确设置语言环境。原来,iTerm2 也有这样的设置。禁用它,使 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=
Run Code Online (Sandbox Code Playgroud)

这也不是很好,因为我已将系统设置为瑞士德语。normale 终端应用程序在这方面更好:

$ 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=
Run Code Online (Sandbox Code Playgroud)