- - PR -
boot中のロケールについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-03 17:20
初めての投稿になります。
よろしくお願いします。 boot中のロケールに関する疑問です。 /etc/sysconfig/i18n にデフォルトロケールの設定として、 LANG="ja_JP.UTF-8" となっていることを確認しました。 その後 /etc/init.d/ にコマンド:localeを実行するシェルを入れて再起動すると LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES=en_US LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL= とboot.logに返されました。 このときのLC_MESSAGES=en_USはいつ設定されてしまったのでしょうか? また、boot中のロケールは /etc/sysconfig/i18n で指定したデフォルトロケールが使われないのでしょうか? もしくはboot中のロケールは固定なのでしょうか? ちなみにログイン後に コマンド:localeを打つと LC_MESSAGES=ja_JP.UTF-8 になっています。 以上、ご存知の方があればお教えいただければと思います。 [ メッセージ編集済み 編集者: HAI 編集日時 2006-04-03 18:05 ] | ||||
|
投稿日時: 2006-04-03 18:01
どうやって実行させているかいまいち分かりませんが 可能性としては、シェルスクリプト内で /etc/init.d/functionsを読み込ませている場合かと。 _________________ 桃李不言 下自成蹊 | ||||
|
投稿日時: 2006-04-03 18:46
anightsさん、ご返答ありがとうございます。
分かりにくい説明になってしまい申し訳ありませんでした。 localeシェルの実行方法ですが、再起動でboot中に実行させます。 (本文も書き直しました。) /etc/init.d/functions の中に export LC_MESSAGES=en_US という記述があったので「このためか!」とも思ったのですが、 exportによって設定した環境変数はそのシェルのみに有効だった記憶しています。 (軽く検索したところ「envコマンドと違い設定した環境変数はターミナルから ログアウトもしくはexitするまで保持」とありました) ですので、この環境変数がboot中ずっと使われているのか疑問です。 他のシェルでenvコマンドを使っているもの(/etc/init.d/hpoj)がありましたが、 それは exec env LANG=C $0 となっていてen_USではありませんでした。 やはり起動中のLC_MESSAGESは決めうちと考えるべきなのでしょうか? | ||||
|
投稿日時: 2006-04-04 10:12
anightsさんの回答から理解できました。
/etc/init.d/functions が /etc/init.d 配下のシェルを実行してるために、ここで設定されている export LC_MESSAGES=en_US が有効になってしまうということですね? ありがとうございました。 | ||||
|
投稿日時: 2006-04-05 11:20
いろいろ解釈を間違えてました。
/etc/init.d/functions の一番上にある説明文を読み間違えて "/etc/init.d/functions が /etc/init.d 配下のシェルを実行してる" なんて解釈をしてしまいました。 localeシェルにおいて /etc/init.d/functions はよびだしていません。 なので問題は逆戻りです。 localeシェルが呼ばれるまえに、functionsを呼んだ別のシェルの設定が保たれてしまうと考えてよいのでしょうか。 |
1