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

[debian-devel:15360] Re: bash の初期化がおかしい



小池@JAISTです。

>>>>> In [debian-devel : No.15355] 
>>>>>	tkubota@xxxxxxxxxxx (Tomohiro KUBOTA) wrote:
> まず、この状態で (ssh を使って) ログインすると、(1) cd コマンドの
> エラーが (過去の OUTPUT_CHARSET 問題のときみたいに) 「?」で表示され、
> (2) bash 2.05b-1 から有効になったはずのマルチバイト/マルチカラム文字
> の編集機能が働きません。

当方の環境でも確認できました。ssh を使用しなくても、LANG 環境変数を空
や C に設定したり、また、環境変数自体を設定しないで bash を実行すると
再現できます。

scene:~$ echo $LANG
ja_JP.eucJP
scene:~$ cd foobar
bash: cd: foobar: そのようなファイルやディレクトリはありません
scene:~$ LANG=C bash
scene:~$ echo $LANG
ja_JP.eucJP
scene:~$ cd foobar
bash: cd: foobar: ??????????????????????

どうも、bash 自体を起動する際のロケールに依存しているようです。ssh の
場合には、ssh が bash を起動する際に LANG が設定させていないので、久保
田さんがおっしゃるような現象になるものと思われます。

また、bash を起動する際のロケールがマルチバイトロケールならば、ちょっ
と変ですが(*1)、指定通り動作するようなので、

> さらに、LANG=ja_JP.eucJP の状態で、bash を手動で起動してみます。

これ以降では、正しい表示になります。

ですので、とりあえずの解決で良ければ、上川さんがご指摘されている
~/.ssh/environment で LANG=ja_JP.eucJP などのマルチバイトのロケールを
設定すれば回避できます。

# (*1)この場合も、LANG=en_US.UTF-8 等のようなマルチバイトロケールだ
# と、メッセージが異常です。LANG を再設定しても直りません。

それから、

>>>>> In [debian-devel : No.15359] 
>>>>>	ukai@debian.or.jp (Fumitoshi UKAI) wrote:
> ざっとソースをながめただけですが ここで(1)が解決しないというのは
> locale.c:set_lang() で setlocale() したら textdomain(3)、bindtextdomain(3) 
> もするようにしたら治りませんか?

この辺の関数の使い方がよく分からないので、とりあえず、textdomain(NULL) 
と bindtextdomain(NULL, NULL) を足してみたのですが、変化ありませんでし
た。

私は、Debian package のものや bash205b-00[1-4] のpatch を当てていない、
素の状態の bash-2.05b を Solaris 2.7 上で使用しているのですが、そちら
では今回の現象は再現しませんでした。素のソースから Linux 上で作った 
bash では再現しているので、一概に bash の bug とは言えない気がちょっと
します。

どうも、Solaris のロケールと Linux のロケールでば微妙に動作が異なる場
合があるようなので、もしかすると、この問題もその辺りなのかもしれません。

-- 
こいけ@じゃいすと(がくせい) <s-koike@xxxxxxxxxxx>