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

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



At Mon, 28 Oct 2002 15:37:15 +0900,
Tomohiro KUBOTA wrote:

> この現象は bash のバグだと思うのですが、BTS で英語で説明するよりも
> こちらのほうが解決の近道かもしれないと思うので、こちらに投稿します。
>
> bash 2.05b-3 を使っています。ja_JP.eucJP ロケールを作ってあります。
> また、~/.bash_profile と ~/.bashrc の両方に
> 
>   LANG=ja_JP.eucJP
>   export LANG
> 
> と書いていある状態です。
> 
> 
> まず、この状態で (ssh を使って) ログインすると、(1) cd コマンドの
> エラーが (過去の OUTPUT_CHARSET 問題のときみたいに) 「?」で表示され、
> (2) bash 2.05b-1 から有効になったはずのマルチバイト/マルチカラム文字
> の編集機能が働きません。
> 
> まず (1) ですが、
>
>   $ echo $LANG
>   ja_JP.eucJP
>   $ set | grep LANG
>   LANG=ja_JP.eucJP
>   $ cd notexist
>   -bash: cd: notexist: ??????????????????????
> 
> となります。(2) は、たとえば「あ」と入力してから Backspace を押すと、
> 「あ」という文字全体が消えるべきなのに、右半分しか消えません。
> 
> 次に、
> 
>   $ LANG=ja_JP.eucJP
> 
> としてみます。本来なら、LANG はすでに ja_JP.eucJP に設定されている
> はずなので、何の効果もないはずです。が、これを行うと、(2) が解決
> してしまいます。(1) は解決しません。

ざっとソースをながめただけですが ここで(1)が解決しないというのは
locale.c:set_lang() で setlocale() したら textdomain(3)、bindtextdomain(3) 
もするようにしたら治りませんか?

最初で (2) がだめなのは variables.c:stupidly_hack_special_variables()
あたりがよばれてないからかな‥

> (また、「cd notexist」に対するメッセージの最初の文字「-」も、
> ちょっと気になります。何なのでしょうか?)

login shell の場合は argv[0] が -<shellのbasename> になるはずです。
# shadow/libmisc/shell.c:shell()

-- 
鵜飼文敏