107.3標準
command出力を解析するshell scriptで、実行者の言語設定によるmessageや照合順序の差を抑えたい。
script内のcommandへ適用する代表的な設定はどれか。
× 不正解
LANG=Cは移植可能なC localeを使わせ、scriptがlocale依存出力を解析する際の差を減らす。LC_ALLが設定済みならそちらが優先する。
詳細解説
誤り
LANG=autoautoは移植可能な標準locale名ではない。
誤り。autoは標準化されたlocale名ではなく、実行環境間で同じ結果を保証しない。
誤り
LC_TIME=local日時categoryだけを未定義のlocal値へ変えても全体を固定できない。
誤り。LC_TIMEだけではmessageや照合等のほかのcategoryを固定できず、localも標準locale名ではない。
誤り
TZ=LANGTZはtimezoneを制御し、locale messageや照合順序を固定しない。
誤り。TZはlocal time変換を変える変数で、command messageの言語やsortの照合規則を固定しない。
正しい
LANG=C標準C localeを既定にし、未上書きcategoryの表記や照合を安定させる。
正しい。LANG=CはC localeを既定にして表記差を抑える。ただしLC_ALLや個別LC_*が設定済みなら優先関係も処理する必要がある。
実際に確かめる
一時的な検証環境で実行できる例です。
LANG=C LC_ALL= date -d 'invalid-date' 2>&1 | head -n 1期待される結果
英語のエラーメッセージ(date実装により文面は異なる)理解のポイント
- Cは標準locale
- 解析対象の出力を安定化
- LC_ALLの優先に注意
確認時の注意
- 確認環境: GNU date / C locale
基礎のおさらい
machine-readable interface
可能なら人間向け表示をparseせず、専用format optionやexit status等の安定interfaceを使う。
CとC.UTF-8
Cは標準localeである。C.UTF-8の利用可否や名称は環境依存なので、文字encoding要件とは分けて選ぶ。
問題IDKP-107-708
確認環境GNU date / C locale
最終技術確認2026-08-13
誤り・権利侵害を報告