[CentOS]CentOS7でのロケール(locale)の確認及び変更


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コマンドを経由して変更した方が無難と思われます。

なんだか面倒くさくなりましたが、慣れていくしかないんでしょうね。