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コマンドを経由して変更した方が無難と思われます。
なんだか面倒くさくなりましたが、慣れていくしかないんでしょうね。