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

[plamo:17139] Re: konの後でfortuneを動作させるには



松本@netfort です。

_Subject: [plamo:17131] konの後でfortuneを動作させるには
_From: "nori" <ja5ibp@mx81.tiki.ne.jp>

> 河村です。
> 
> とても初歩的なことをおたずねします。
> 
> 当方、login直後にkonしたいと思い
> 

  実はかなり高度な質問だったりして。

> if [ $TREM = linux ]; then
> kon
> fi

  若干問題はありますが、

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

を .bash_login の先頭に追加するというのはどうでしょう。

  注意しなければならないのは、login時の "you have mail." 等の
メッセージは loginが、shellを起動する前に表示しています。よっ
て、.bash_login, .bashrc をどういじっても解決しないと思います。
mailスプールをチェックするプログラムを探すか、作るかして、
.bash_login にでも書いておくと良いでしょう。上記例では、
[ -f /usr/spool .... のところがそうです。

  kon を起動した後 ps -axf 等で調べれば分かる通り、

1)   -bash
2)    \_ kon
3)       \_ -bash

  となっています。1) の bashの .bash_login は、konを実行した、
ところで止まっています。3) bash を exit 等で終了すると、kon が
終了して、1) bash の .bash_login の続きを実行します。kon の画面
で exit一発で logoutしたければ、サンプルの通り kon の後ろに、
exit を書いておくと良いでしょう。
  1) の bashも 3) の bashも、 login shell として起動され、
.bash_login, .bashrc が実行されますが、3) bash では、
fortune が実行されません。これは、Plamo 3.0 標準の .bash_loginでは

if [ $SHLVL = 1 ] ; then
  if [ -x /usr/games/bin/fortune ]; then

となっているからです。ちなみに 3) bash では、$SHLVL は 2になって
いるはずです。上記サンプルでは、$TERM = kon の時に fortuneを実行
するようにしていますが、 if [ $SHLVL = 1 ]; then と、対になる fi を
外してしまうという乱暴な考え方もあります。

  あと、話は外れますが、せっかくkon で実行するのだから、日本語
fortuneなんて、あればいいかも。Plamo の fortuneは、8bit clean 
なので、EUCで、データを作成するだけで(とはいえそれがしんどい)
出来上がります。

-- 
松本 徳真
Norimasa Matsumoto
E-mail: matsu@netfort.gr.jp

Follow-Ups
[plamo:17140] Re: konの後でfortuneを動作させるには, nori
References
[plamo:17131] konの後でfortuneを動作させるには, nori

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