Linuxロケール環境変数(LANG / LC_ALL / LANGUAGE)のまとめ

Linuxシステムにおける「言語」や「地域設定(ロケール)」を制御する環境変数 LANGLC_ALLLANGUAGE の用途と違いのまとめです。

1. 各環境変数の用途

  • LANG (すべての基本となるデフォルト値)
    • システム全体のロケール設定のベース(基本値)を決定します。
    • 日付の形式、通貨、メッセージの言語など、あらゆる個別項目のデフォルトとして機能します。個別に細かい設定が行われていない場合は、すべてこの LANG の設定が採用されます。
  • LC_ALL (最強の一括上書き変数)
    • すべてのロケール項目を、強制的に一つの設定に塗り替える「最強の変数」です。
    • 個別の細かい設定(LC_TIMELC_NUMERIC など)がどのように設定されていても、この LC_ALL に値が入っていると、すべての個別設定を完全に無視して最優先されます。
    • トラブルシューティング時などに、一時的に環境を英語(C)に固定して検証したい場合などによく使われます。
  • LANGUAGE (メッセージの言語専用・複数指定可)
    • エラーメッセージやヘルプ画面など、「システムが表示する文章の言語」だけを制御する変数です。
    • LC_ALLLANG よりも優先してメッセージ言語を決定します。
    • 最大の特徴は、コロン(:)で区切って ja:en のように複数の候補(優先順位)を指定できる点です(GNU拡張)。これにより「日本語の翻訳データがあれば日本語で、なければ英語で表示する」といった柔軟な設定が可能です。

2. 環境変数の「優先順位(力関係)」

ロケール設定が適用される優先順位は、用途(メッセージ文章か、それ以外か)によって異なります。

文章(メッセージ)の言語を決める場合

 LANGUAGELC_ALLLC_MESSAGES(個別のメッセージ設定) > LANG
 ※画面に表示される言葉に関しては、LANGUAGE がもっとも強い権限を持ちます。

文章以外の設定(日付、通貨、ソート順など)を決める場合

 LC_ALLLC_個別項目LC_TIME など) > LANG
 ※日付や通貨などの書式については、LC_ALL が最強で、設定されていなければ個別の設定、それもなければ LANG が使われます。

3. C.UTF-8 と ja_JP.UTF-8 の違い

項目C.UTF-8ja_JP.UTF-8
言語・文化慣習伝統的なコンピュータ用(POSIX標準環境、基本は英語)日本(JP)地域向けの、日本語(ja)環境
システムメッセージすべてのメッセージが英語で表示翻訳データがあれば日本語で表示
日付・時刻の書式欧米(コンピュータ標準)の慣習(例: Thu Jun 25 ...)日本の慣習(例: 2026年6月25日 木曜日)
データの並び替え文字に割り当てられた純粋なバイト値(文字コードの番号順)で機械的にソート日本語の辞書順などを考慮した複雑なルールでソート
処理スピード文化的ルールを無視して機械的に処理するため高速複雑な文化的ルールを計算するためシステムに若干の負荷あり

4. 専門用語の解説

  • ロケール (Locale)
    • ソフトウェアにおける「言語」や「国・地域」の設定のことです。文字コードだけでなく、日付の表示形式や通貨の単位、数字のカンマ区切りの位置などもロケールによって決定されます。
  • 環境変数 (Environment Variable)
    • OSが、動作中のプログラムに対して「現在の設定」を伝えるための共通の保管庫(変数)のことです。今回の LANGLC_ALL も環境変数の一種です。
  • LC_* (エルシー・アスタリスク)
    • Linuxのロケール設定における、個別項目の総称です。LC_TIME(日付・時刻)、LC_MONETARY(通貨)、LC_MESSAGES(メッセージ言語)など、目的別に細かく分かれています(LCは Locale Category の略)。
  • POSIX (ポジックス)
    • Unix系OS(LinuxやmacOSなど)の間で、プログラムの互換性を保つために定められた共通の国際標準規格のことです。この規格で定義されている標準の英語環境を「C(またはPOSIX)ロケール」と呼びます。
  • ソート (Sort)
    • 特定の規則(五十音順、アルファベット順、数値の大小など)に従って、データを順番に並び替える処理のことです。
  • GNU拡張 (グニュー・カクチョウ)
    • Linuxのベースとなっている「GNU」というプロジェクトが、標準規格(POSIXなど)に対して独自に使いやすく追加した便利な拡張機能のことです。

2026-06-25 by Gemini