CentOS7では「systemd」が採用されたことにより、システム設定まわりと起動処理がそれまでと大きく変わりました。
その為、従来の方法ではうまく設定できない場合があります。
CentOS7でのロケール確認・設定コマンド
CentOS7においては、ロケール(locale)の設定内容の確認や変更は「localectl」 コマンドを使用することになります。
localectlコマンドのhelpは以下
# localectl --help localectl [OPTIONS...] COMMAND ... Query or change system locale and keyboard settings. -h --help Show this help --version Show package version --no-convert Don't convert keyboard mappings --no-pager Do not pipe output into a pager -P --privileged Acquire privileges before execution --no-ask-password Do not prompt for password -H --host=[USER@]HOST Operate on remote host Commands: status Show current locale settings set-locale LOCALE... Set system locale list-locales Show known locales set-keymap MAP [MAP] Set virtual console keyboard mapping list-keymaps Show known virtual console keyboard mappings set-x11-keymap LAYOUT [MODEL] [VARIANT] [OPTIONS] Set X11 keyboard mapping list-x11-keymap-models Show known X11 keyboard mapping models list-x11-keymap-layouts Show known X11 keyboard mapping layouts list-x11-keymap-variants [LAYOUT] Show known X11 keyboard mapping variants list-x11-keymap-options Show known X11 keyboard mapping options
現在のロケール(locale)の確認
現在のロケール(locale)を確認方法は以下の通り
# localectl status System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp106 X11 Layout: jp
※「status」は省略可能です
使用可能なロケール(locale)の一覧
使用可能なロケール(locale)を確認するには以下のコマンドを実行します
# localectl list-locales aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER aa_ER.utf8 aa_ER.utf8@saaho aa_ER@saaho aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 : : : :
たくさんありますね
日本語関連に限って見てみると以下のような感じです
# localectl list-locales | grep -i ja ja_JP ja_JP.eucjp ja_JP.ujis ja_JP.utf8 japanese japanese.euc
ロケール(locale)の変更
現在のロケールは「LANG=ja_JP.utf8」です。これを「ja_JP.eucjp」に変更するには以下のコマンドを実行します
# localectl set-locale LANG=ja_JP.eucjp
変更されたか確認してみます
# localectl status System Locale: LANG=ja_JP.eucjp VC Keymap: jp106 X11 Layout: jp
LANG=ja_JP.eucjpと変更されています。
ちなみに、ロケール(locale)の設定ファイルは /etc/locale.confになります。このフアイルの内容も以下の様になっています。
# cat /etc/locale.conf LANG=ja_JP.eucjp
なお、これだけでは設定ファイルが変更されただけであって、LANG環境変数は依然として変更前のままです。
再度ログインし直せば設定は反映されますが、設定を現在のコンソールに反映するには以下のコマンドを実行します
# source /etc/locale.conf
恐らく/etc/locale.conf ファイルを直接変更しても問題はないと思いますが、安全を考えるとlocalectlコマンドを経由して変更した方が無難と思われます。
なんだか面倒くさくなりましたが、慣れていくしかないんでしょうね。