The Apple Geek

Чему ты научился сегодня?

Исправление ошибок локали при работе по ssh через Terminal.app в OS X Lion

После установки OS X Lion я заметил, что при работе на удалённых хостах по ssh стали выдаваться такие ошибки “Please check that your locale settings”:

perl: warning: Please check that your locale settings:    LANGUAGE = (unset),    LC_ALL = (unset),    LC_CTYPE = "UTF-8",    LANG = "en_US.UTF-8"    are supported and installed on your system.

Причина в том, что в OS X Lion Terminal.app LC_CTYPE выставляется в значение UTF-8, а не en_US.UTF-8.

Вот информация по локали на Mac:

$ localeLANG=LC_COLLATE="C"LC_CTYPE="UTF-8"LC_MESSAGES="C"LC_MONETARY="C"LC_NUMERIC="C"LC_TIME="C"LC_ALL=

На удалённую систему передаётся LC_CTYPE (/etc/ssh_config: SendEnv LANG LC_* ):

$ localeLANG=en_US.UTF-8LANGUAGE=LC_CTYPE=UTF-8LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_PAPER="en_US.UTF-8"LC_NAME="en_US.UTF-8"LC_ADDRESS="en_US.UTF-8"LC_TELEPHONE="en_US.UTF-8"LC_MEASUREMENT="en_US.UTF-8"LC_IDENTIFICATION="en_US.UTF-8"LC_ALL=

Есть два способа решения.

Первый - отключить в настройках Terminal.app в закладке Advanced “Set locale environment variables on startup”:

Второй - внести в ~/.bash_profile и ~/.bashrc правильный параметр:

$ cat .bash_profile export LC_CTYPE=en_US.UTF-8

Comments