- PR -

boot中のロケールについて

1
投稿者投稿内容
HAI
会議室デビュー日: 2006/04/03
投稿数: 8
投稿日時: 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 ]
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2006-04-03 18:01
引用:

HAIさんの書き込み (2006-04-03 17:20) より:
その後
/etc/init.d/
にコマンド:localeを実行するシェルを入れてみたところ



どうやって実行させているかいまいち分かりませんが
可能性としては、シェルスクリプト内で
/etc/init.d/functionsを読み込ませている場合かと。

_________________
桃李不言 下自成蹊
HAI
会議室デビュー日: 2006/04/03
投稿数: 8
投稿日時: 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は決めうちと考えるべきなのでしょうか?
HAI
会議室デビュー日: 2006/04/03
投稿数: 8
投稿日時: 2006-04-04 10:12
anightsさんの回答から理解できました。

/etc/init.d/functions

/etc/init.d
配下のシェルを実行してるために、ここで設定されている
export LC_MESSAGES=en_US
が有効になってしまうということですね?
ありがとうございました。
HAI
会議室デビュー日: 2006/04/03
投稿数: 8
投稿日時: 2006-04-05 11:20
いろいろ解釈を間違えてました。

/etc/init.d/functions
の一番上にある説明文を読み間違えて
"/etc/init.d/functions

/etc/init.d
配下のシェルを実行してる"
なんて解釈をしてしまいました。

localeシェルにおいて
/etc/init.d/functions
はよびだしていません。
なので問題は逆戻りです。

localeシェルが呼ばれるまえに、functionsを呼んだ別のシェルの設定が保たれてしまうと考えてよいのでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)