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

[plamo:21638] Re: Plamo3.3不具合あれこれ



From: Norimasa Matsumoto <matsu@bi.wakwak.com>
Message-Id: <20040105.215427.74747473.matsu@bi.wakwak.com>

> > >   if [ -n "$PS1" ]; then exit; fi
> > 
> > これだと kterm が落ち,コンソールでもログインできないのですけど,

うわぁすみません。思いっきり論理が逆でした。

  if [ -z "$PS1" ]; then exit; fi

で、私が .cshrc に書いたコードと等価になるのですが…

>   .bashrc の中で exit 実行すると、bash が終了してしまいますので、
> これはまずいです。

csh と違って、シェルスクリプトや[rs]shでもまずかったりしますか?

>   田原さんの、インタラクティブなシェルかどうかの判断に $PS1 の値を
> 見なさいと言う指摘自体は正しいと思います。

ええ、ココロはそんなところです。

stty や対話シェルの挙動を決めるシェル変数の設定等は後ろの方にやって、
スクリプト実行時等ではその前に抜ける、というのが、「お行儀のいいシェル
の初期化」だと思っていますが、exit が使えないとなると、

>   結局どうすればきれいに納まるのか良く分かりませんが、次のような
> 方法はどうでしょうか?
> 
>   .bashrc の出来るだけ早い段階で
> 
> IS_INTERACTIVE=$PS1
> 
> を実行しておいて、対話的でないシェルに必要が無い部分で
> 
> if [ -n "$IS_INTERACTIVE" ] ; then
>    stty ...
>    stty ...
> fi

というのでもOKだと思います。実は PS1 の再設定も対話シェル特有の設定で
すので、IS_INTERACTIVE の代入は要らないですね。

>   私は、stty の実行でエラーになる原因は標準入力が tty で無いから
> なので、tty コマンドで、tty かどうかチェックしてから実行してやれ
> と言う安直な手法に出ました。

一応公式な解答がとして PS1 を見る、というのがあったのでそれに拘ってみ
ましたが、パッと見た感じはこれもよい別解だと思いました。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Follow-Ups
[plamo:21641] Re: Plamo3.3不具合あれこれ, Chisato Yamauchi
References
[plamo:21633] Re: Plamo3.3不具合あれこれ, Shun-ichi TAHARA (田原 俊一)
[plamo:21635] Re: Plamo3.3不具合あれこれ, MOUE Kiyoshi
[plamo:21636] Re: Plamo3.3不具合あれこれ, Norimasa Matsumoto

[検索ページ] [メール一覧]
Plamo ML 公開システム