-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)で怒られたときの対処
どのタイミングでなったのかは定かではない(最初からだったかもしれない)のですが、サーバにsshで接続すると
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)
となるわけです。
なので、
$ locale
ってすると
locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=C LC_CTYPE=UTF-8 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ってやつはなんなんだと。
Unix系OSでのアプリケーションの多言語対応は、素のままの表示メッセージの翻訳を各ロケールごとに作成し、アプリケーションの実行中に逐一対応するメッセージを翻訳ファイルから探してきて表示する。LANG=Cではそれをしない、ということ。
なるほど、ではこれはデフォルトがアメリカ語であるということですね。
それはわかったが、要は
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
なのです。
とりあえず、ここにあるようなやりかたで進める。
localeを変更する場合はいかの設定ファイルを書き換える。
etc/sysconfig/i18n
現在の設定を確認
$ cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
バックアップをとる
$ cp -p /etc/sysconfig/i18n /etc/sysconfig/i18n.org~
現在の設定を全てコメントアウトします。
$ sed -i 's/^/#/g' /etc/sysconfig/i18n $ cat /etc/sysconfig/i18n #LANG="en_US.UTF-8" #SYSFONT="latarcyrheb-sun16"
/etc/sysconfig/i18n に「en_US.UTF-8」を使用するよう追記します。
echo 'LANG="en_US.UTF-8"' >> /etc/sysconfig/i18n
設定を確認
$ cat /etc/sysconfig/i18n #LANG="en_US.UTF-8" #SYSFONT="latarcyrheb-sun16" LANG="en_US.UTF-8"
変更をかけた設定を反映させる
$ . /etc/sysconfig/i18n
エラーが出ないはず
と思ったら、でました。
$ locale locale: Cannot set LC_CTYPE to default locale: No such file or directory LANG=en_US.UTF-8 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=
LC_CTYPEが他と違っているのかと思い、/etc/sysconfig/i18nに
LC_CTYPE="en_US.UTF-8"を追加したらうまくいきました。
でも、もやもやする。
調査がまだまだ必要です。
参考サイト様
http://pubs.opengroup.org/onlinepubs/7908799/xcu/localedef.html
http://www.gnu.org/software/libc/manual/html_node/Standard-Locales.html