Как исправить кодировку символов в bash (arch linux)

8

У меня есть некоторые проблемы с кодировкой немецких умлаутов в bash. В основном это работает нормально, но когда я набираю неверную команду, сообщение об ошибке, сгенерированное bash, содержит странные escape-последовательности, а не реальные символы.

Вот журнал, который показывает проблему:

[root@myhost ~]# mkdir ä
[root@myhost ~]# ä
-bash: $'\303\244': Kommando nicht gefunden.
[root@myhost ~]# ü
-bash: $'\303\274': Kommando nicht gefunden.
[root@myhost ~]# ls
ä  äöü  Projects  tbb
[root@myhost ~]# cat äöü
äüö
[root@myhost ~]# rm ä
rm: Entfernen von „ä“ nicht möglich: Ist ein Verzeichnis
[root@myhost ~]# rmdir ä
[root@myhost ~]# rm äöü

Конфигурация моя /etc/rc.conf:

LOCALE="de_DE.UTF-8"
DAEMON_LOCALE="no"
HARDWARECLOCK="localtime"
TIMEZONE="Europe/Berlin"
KEYMAP="de-latin1"
CONSOLEFONT=
CONSOLEMAP=
USECOLOR="yes"

/etc/locale.gen содержит только локали de_DE:

de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15

locale вывод:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
smerlin
источник
Какой эмулятор терминала вы используете?
Роман Б.
@RomanB: замазка, но проблема та же, если использовать локальную оболочку raw, так что это проблема bash.
Смерлин
@smerlin, нет «необработанной оболочки», вы имеете в виду консоль, gnome-терминал, urxvt, xterm или другое? Если вы используете консоль, что произойдет, если вы попробуете "export TERM = linux"?
Александр
@ Александр То же самое:$ ö bash: $'\303\266': command not found
Роман Б.

Ответы:

1

Это похоже на bash 4.2. Вы можете сообщить об этом как об ошибке разработчикам bash.

Александр
источник
Согласен. Он разбивает символ Unicode на составляющие его байты, поэтому его обработка Unicode отключена.
jpaugh