彷徨えるフジワラ

年がら年中さまよってます

システムワイドなロケール設定 〜 Debian GNU/Linux

Debian GNU/Linux でのシステムワイドなロケール設定の取り扱いに関して、調べた結果を備忘録代わりにまとめておきます。

設定格納先

Debian GNU/Linux の場合、システムワイドなロケール設定は /etc/default/locale ファイルに、以下のような形式で記述されています。

#  File generated by update-locale
LANG="en_US.UTF-8"

設定更新方法

システムワイドなロケール設定は、/etc/default/locale の直接書き換えでも変更可能ですが、update-locale コマンドを使うのが推奨されています(いずれの方法でも、当然ルート権限が必要です)。

# update-locale LANG=ja_JP.UTF-8

update-locale コマンドを使用した場合、設定内容を /etc/default/locale に書き出す前に、設定された各ロケール値が、実行環境において有効なものか否かのチェックが実施されます。そういった安全性の点からも、設定の変更には、update-locale コマンドを使用した方が良いでしょう。

設定内容の反映契機

/etc/default/locale ファイルに記述された設定内容は、PAM 認証機能経由で読み込まれます。

例えば、SSH サーバ向けの PAM 設定ファイル /etc/pam.d/sshd には、以下のような設定が記述されています。

auth required pam_env.so envfile=/etc/default/locale

/etc/pam.d/ 配下の cronlogin などは、以下のような記述で /etc/default/locale ファイルを読み込んでいます。

session required pam_env.so readenv=1 envfile=/etc/default/locale

なお、ファイルの直接編集や update-locale 実行により、/etc/default/locale の内容が更新された場合は、その直後の認証処理から、更新後の設定内容が有効になります。