[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:47516] Re: LC_ALL について



しまった、質問の大きな流れとコマンドの実験の値をちゃんと
みてリプライせず、一般的な振舞いだけにリプライしてしまった
松田(健一)です。

> From: GOTO Masanori
> Date: Tue, 24 Oct 2006 01:19:26 +0900

> これは正確ではないと思います。
> 
> 問題は LC_PAPER に定義されていない(つまり locale -a コマンドで表示さ
> れない)ロケール名が使用されているため、man コマンドが setlocale() 関
> 数を実行しようとしたところ、libc の内部において知らないロケール名 A4 
> を発見したのでエラーで失敗を返してしまったためだと思います。その環境で
> 定義されている正しい名前が入っていれば動作したのではないでしょうか。

後藤さんのおっしゃる通りです。

LC_ALL= LANG=ja_JP LC_PAPER=ja_JP man man

とかで日本語マニュアルが表示されることを確認しました。

> そこで、問題はなぜLC_PAPERに無効な環境変数を設定しているのかになります:
> 
> 1. なぜ LC_PAPER に A4 を設定しているのか?
> 
>    LC_PAPERは他のロケール環境変数と同様 ja_JP.UTF-8 などを指定するもの
>    です。なぜ LC_PAPER に A4 を設定されたのでしょうか。まず普通には知
>    られていないものだと思うのですが。

実は私も今まで知りませんでした。というか、知らなくても全く問題なかった
わけですが。

もしあるアプリケーションが LC_PAPER=A4 で作動しているとすれば、
その挙動自身、何かおかしいですね。

> 2. LC_PAPER を使う必要があるのか?
> 
>    LC_PAPER など ISO-14652 で制定されたロケールはほとんど使い道がなく
>    て現実問題使われていないと考えています(LC_NAMEなど)。なぜ設定され
>    ているのでしょうか?
> 
> 何か使っているアプリケーションがあってしかたなく設定されているとすれば、
> それがどうして LC_PAPER を使っているのかを考えた方が良さそうです。
> 特に理由がなく設定されているならば設定自体を消すべきだと思います。

これも全くそのとおりだと思います。

全般的な設定は LANG で行い、特定のカテゴリの振舞いだけを特に変えたい
場合のみにその変数を明示的に定義する、というのが比較的無難なやり方
ではないかと思います。

それでも、ある変数を自分で定義して .login かどこかで自動設定される
ようにしておいて、ずっと時間がたって忘れた頃にコマンドが自分の想定する
動きをしないと調べまくり、実は昔自分で定義していた変数が原因だったと
いうことをよくやっているので、極力システムのデフォルトですべてうまくい
くようにして、自分独自の定義は必要最小限にした方が、後々楽になるの
ではないでしょうか。

失礼しました。
----
Keni