rc.statusファイルがLC_ALLロケールを設定するのはなぜですか?

rc.statusファイルがLC_ALLロケールを設定するのはなぜですか?

現在デーモンサービスを作成していますが、既存のサービス機能を利用するために、起動スクリプトは/ etc / statusから取得されます。

最初の行では、ロケールが POSIX に設定されているため、サービスに問題が発生します。

# Do _not_ be fooled by non POSIX locale
LC_ALL=POSIX
export LC_ALL

問題は、スクリプトから開始されたサービスがこのロケールを継承することです。この問題に対する簡単な解決策は、子プロセスを開始する前にロケールを設定解除することです。しかし、これが何を意味するのかわかりません。 rc.statusからデータを取得した後にLC_ALL変数をリセットすると、どのような結果が発生しますか?

ベストアンサー1

POSIXではなくロケールを使用して呼び出すと、多くのシステムデーモンが奇妙に動作します。特に、大文字と小文字を区別するUTF-8コントラストは通常​​処理されません。 POSIX 以外の時間形式では、通常、固定時間形式を必要とする標準ツールでログファイルを解析できなくなる可能性があります。まれですが、LC_CTYPE問題が発生する可能性があります。

通常、デーモンにシステム全体のロケールが必要な/etc/sysconfig/language場合rc.status。 (これは安全に見える一種のSuSEを想定します。BSDなら現在どこにrc.status保存されているのかわかりません。RC_RC_LC_ALL

おすすめ記事