Я использую st, простой терминал или suckless-терминал, который является терминалом с поддержкой Unicode.
У меня есть две машины, обе работают под управлением Arch Linux с в основном одинаковыми настройками системы, но я получаю поддержку Unicode только на старой машине!
После некоторого расследования я думаю, что это как-то связано с моими местами, но я не совсем уверен.
locale
дает:
[tim@x1carbon: ~]$ locale
LANG=en_DE.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
Насколько я понимаю, это означает, что все, что написано в "..."
, задано неявно, поэтому единственными явно заданными локалями будут LANG
и LC_ALL
.
Я установил LANG=de_DE.UTF-8
в /etc/locale.conf
.
[tim@x1carbon: ~]$ cat /etc/locale.conf
LANG=de_DE.UTF-8
LC_COLLATE=C
LANGUAGE=en_US.UTF-8
но я не помню, чтобы вообще был установлен LC_ALL
(на моей старой машине эта переменная просто пуста, когда я запускаю locale
)!
Я запустил sudo grep -rnw '/usr/' -e 'LC_.*=C'
(шаблон поиска, который просматривает каждый файл в /usr/
-directory), который выводит много скриптов и файлов, содержащих LC_ALL=C
, но в большинстве случаев я предполагаю, что существующие программы просто читали мой набор LC_ALL
-variable и добавление соответствующих переменных в их сценарии.
Я не могу найти, где я на самом деле установил эту переменную, и я могу ошибаться со своим пониманием, что это является причиной ложного рендеринга, но все же: установка LC_ALL
в ложный языковой стандарт может вызвать много других проблем, я думаю.
Кроме того, localectl status
выдает:
[tim@x1carbon: ~]$ localectl status
System Locale: LANG=de_DE.UTF-8
LANGUAGE=en_US.UTF-8
LC_COLLATE=C
VC Keymap: de-latin1
X11 Layout: n/a
... который такой же выходной, как на рабочей машине.
Я передал вывод команды grep
в файл журнала, и я могу загрузить этот файл куда-нибудь, но я не знаю, как это сделать правильно, поскольку у меня пока не было причин делать это.