[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>