107.3標準
次の環境でdateが使う日時localeを判定する。
LANG=ja_JP.UTF-8
LC_TIME=de_DE.UTF-8
LC_ALL=C適用されるlocaleはどれか。
× 不正解
locale categoryの一般的な優先順位はLC_ALL、対応するLC_*、LANGである。
詳細解説
誤り
ja_JP.UTF-8LANGはcategory別設定やLC_ALLがない場合の既定値になる。
誤り。LANGは既定値だが、ここではLC_TIMEとLC_ALLのより強い設定が存在する。
正しい
CLC_ALLは個別のLC_TIMEとLANGを上書きする。
正しい。LC_ALL=Cが日時を含む全categoryを上書きするため、dateのLC_TIMEもCとして解決される。
誤り
de_DE.UTF-8LC_TIMEは通常LANGより優先するが、LC_ALLには上書きされる。
誤り。LC_TIMEはLANGより優先するものの、さらに上位のLC_ALL=Cが設定されている。
誤り3つを順番に連結した値
locale値は連結せず、優先順位によって1つを選ぶ。
誤り。3値を連結して新しいlocaleにせず、categoryごとの優先順位で有効値を1つ決める。
実際に確かめる
一時的な検証環境で実行できる例です。
LC_ALL=C LC_TIME=de_DE.UTF-8 LANG=ja_JP.UTF-8 locale LC_TIME期待される結果
C理解のポイント
- LC_ALLが最優先
- 次にcategory別LC_*
- LANGは既定
確認時の注意
- 確認環境: glibc locale / C localeのみを前提
基礎のおさらい
優先順位
一般にLC_ALL、対応するLC_*、LANGの順で有効値を決める。
LC_ALLの用途
一時検証では便利だが個別categoryの設定をすべて隠すため、永続設定では影響範囲を理解して使う。
問題IDKP-107-706
確認環境glibc locale / C localeのみを前提
最終技術確認2026-08-13
誤り・権利侵害を報告