После установки 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:
$ 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 (/etc/ssh_config: SendEnv LANG LC_* ):
$ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE=UTF-8 LC_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