[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:17141] Re: konの後でfortuneを動作させるには
-
From:柳 真二
-
Date:Sun, 22 Dec 2002 14:59:45 +0900 (JST)
- Subject: [plamo:17141] Re: konの後でfortuneを動作させるには
- From: 柳 真二<lusr@xxxxxxxxxxxxxxxxxxxxx>
- Date: Sun, 22 Dec 2002 14:59:12 +0900 (JST)
やなぎ@名古屋です。
おそらく、bashとkonの関係を理解されれば自然と
解決できると思いますので、そのあたりを最初に。
ログインシェルのbashからkonを起動すると、以下のように動作します。
(1) bashがkonを起動
(2) 起動したkon上で新しいbashが走る
ここで、kon起動前のbash(便宜上、bash1と呼びます)と
kon起動後のbash(同じく、bash2)は別物です。
以上を踏まえた上で、河村さんと松本さんのスクリプトを見てみると、
このようになります。
From: "nori" <ja5ibp@mx81.tiki.ne.jp>
Date: Sun, 22 Dec 2002 11:30:29 +0900
Subject: [plamo:17140] Re: konの後でfortuneを動作させるには
> plamo3.0の.bash_loginを元に
>
> .$HOME/.bashrc
>
> # kon :loginと同時にkonする
> if [ $TERM = linux ]; then
> kon
(途中略)
> fi
>
> なんていうのを作ってみました。
[河村さんのスクリプトの場合]
bash1が起動されたとき、.bash_loginを実行します。
このときの$TERMはlinuxは1となっています。
ですので、if [ $TERM = linux ] は真となりkonを実行します。
ここでのポイントは、
「bash1はここでkonの終了待ちをするため、以降の処理が実行されない」
ということです。
konを実行するとbash2が起動されますが、これはbash1とは別ですので、
.bash_loginを最初から実行します。
ちなみに、この時の$TERMはkonとなっています。
そのため、if [ $TERM = linux ] は偽となり何も実行されない
ということになってしまいます。
konを終了すると、終了待ちしていたbash1が再開され、
以降の処理(biff/fortune)を実行します。
> > if [ "$TERM" = "linux" ]; then
> > /usr/bin/kon
> > exit
> > fi
> > if [ "$TERM" = "kon" ]; then
> > [ -f /usr/spool/mail/$LOGNAME ] && echo -e "You have mail.\n"
> > [ -x /usr/games/bin/fortune ] && /usr/games/bin/fortune
> > fi
[松本さんのスクリプトの場合]
bash1が起動されたとき、.bash_loginを実行します。
河村さんの場合と同様に、if [ $TERM = linux ] は真となり
konを実行しますが、前述のようにbash1はここで
konの終了待ちをするため、exitはまだ実行されません。
konを実行してbash2が起動された時、.bash_loginを最初から実行します。
$TERMはkonとなっているため、if [ $TERM = linux ] が偽となり
konが二重に起動されてエラーになることもなく、
if [ $TERM = kon ] が真となりechoとfortuneが実行されます。
konを終了すると、終了待ちしていたbash1が再開され、
以降の処理exitを実行しログアウトします。
なので、
> せっかくkonしたのにすぐexitしてしまっては、
> その後$TERM = konは常に偽になるように思うのですが
ということもありませんし、
> うまくできているなと思うのは、この状態でexitすると
> KON>finishedの状態に戻るのでなく
> login前の状態に戻るということです
> うまくできていますね。
ということになります。
> また$TERMなどを " で囲むのと囲まないのではどのような
> 違いが出てくるのでしょうか。
$TERMの値が空のとき、スクリプトが構文エラーとなるのを
防ぐためです。
現実問題、$TERMが空になる状態はないと思いますが、
他の環境変数の場合も同様ですので、
`"'で囲むくせをつけておいた方が無難です。
長々と失礼しました。
それでは。
--------
柳 真二(mailto:lusr@catnip.freemail.ne.jp)
- Follow-Ups
-
- [plamo:17142] Re: konの後でfortuneを動作させるには, nori
- References
-
- [plamo:17131] konの後でfortuneを動作させるには, nori
- [plamo:17139] Re: konの後でfortuneを動作させるには, Norimasa Matsumoto
- [plamo:17140] Re: konの後でfortuneを動作させるには, nori
[検索ページ]
[メール一覧]
Plamo ML 公開システム