В моей системе для переменной языка 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 ответ1

1

После небольшого размышления я пришел к сообщению в блоге «Как правильно настроить локали в приложении Mac OS X Terminal» в блоге Реми Бергсмы. Оказывается, также 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=

Что тоже не здорово, так как я настроил систему на швейцарский немецкий. Нормальное терминальное приложение лучше в этом отношении:

$ 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=

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .