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