LinuCレベル1 システム管理 問21
システム管理/ローカライゼーションと国際化シェルスクリプトの中でコマンドを「LANG=C コマンド」の形で実行することがある理由として、最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「システム管理」に対応。実際の試験問題ではありません)
- Aメッセージや書式が英語の標準形式に固定され、出力を解析しやすくなるから
- B出力メッセージがシステムの既定言語に固定され、日本語で表示されるから
- C文字コードがUTF-8に固定され、多言語の文字が正しく表示されるから
- DコマンドがC言語で再コンパイルされ、実行速度が向上するから
正解:A
解説
Cロケール(POSIXロケール)はどの環境にも必ず存在する基本のロケールで、メッセージは英語、日付などの書式やソート順も決まった形になります。LANG=Cを指定すれば、利用者ごとのロケール設定に左右されずに同じ出力が得られるため、スクリプトで出力を解析するときや、エラーメッセージで検索するときに役立ちます。ただしLC_ALLや個別のLC_*(LC_MESSAGES等)が設定されているとLANGより優先されるため、確実を期すならLC_ALL=Cを使います。
選択肢ごとの解説
- A正しい。Cロケールでは英語のメッセージと決まった書式になり、環境に依存しない出力を得られます。
- B誤り。LANG=Cはシステムの既定言語ではなく、英語のCロケールに切り替える指定です。
- C誤り。Cロケールの文字セットは基本的にASCIIで、UTF-8への固定ではありません。多言語表示が目的ならja_JP.UTF-8等を使います。
- D誤り。「C」はロケール名で、C言語での再コンパイルや高速化とは関係ありません。