Path: ccsf.homeunix.org!ccsf.homeunix.org!news1.wakwak.com!nf1.xephion.ne.jp!onion.ish.org!gcd.org!news.yamada.gr.jp!newsfeed.media.kyoto-u.ac.jp!nntp.gol.com!jpix!news.zaq.ne.jp!not-for-mail From: shirai@unixusers.net (Takashi SHIRAI) Newsgroups: fj.unix.shells Subject: Re: tcsh -> zsh Date: Wed, 30 Mar 2005 00:03:26 +0900 Organization: UNIX users Lines: 54 Message-ID: References: <3991491news.pl@rananim.ie.u-ryukyu.ac.jp> NNTP-Posting-Host: zaq3d2e6940.zaq.ne.jp X-Trace: nsvn02.zaq.ne.jp 1112108611 27438 61.46.105.64 (29 Mar 2005 15:03:31 GMT) X-Complaints-To: usenet@news.zaq.ne.jp NNTP-Posting-Date: Tue, 29 Mar 2005 15:03:31 +0000 (UTC) Xref: ccsf.homeunix.org fj.unix.shells:342  しらいです。 In article , OOTANI TAKASHI wrote: >大谷です。 >不満というか、持田さんの書かれた .bashrc の読み込み条件と同じような理由ですが、 >他のシェル(csh,tcsh,zsh)だと、.logout 相当が実行されるので、 >bashも同じだろうと思ったところが違ったので、「あれ?」と思ったわけです。 >これは.bashrcの件と違ってmanにも書いてないし。 > >manでは、ログインシェルが exits する時 .bash_logout を読むと書いてある。  shell builtin の「exit」なり「logout」なりを実行して shell を終了するのが「ログアウト」ですよね?十歩譲って EOF で終了 するのまで含んだとしても、端末強制終了まで「ログアウト」と呼 ぶのは一体どこの文化でしょうか?  一般に端末を失ったプロセスには SIGHUP というシグナルが飛び ます。このシグナルに対する動作の既定値はプロセスの強制終了で、 プロセスは何の後処理をする暇もなく殺されてしまいます。  これを回避するには SIGHUP に対するイベントハンドラを指定し てやって、SIGHUP が送られた時にそれなりの後処理をしてから終 了するということが可能になります。  で、POSIX 的には login shell に求められている SIGHUP 動作 は「子プロセスにも SIGHUP を送って看取る」程度のことであって、 この辺りの動作を「ログアウト」とは呼ばない筈です。  csh なり zsh なりがその時についでに .logout を実行するのは、 どちらかと言えばお節介だと思いますけどねー。  プロセスにとって端末を失うというのは普通は予期せぬアクシデ ントの筈です。そういう時に、危険回避のための子プロセス心中は 理解出来ても、通常終了用の .logout 実行というのは如何なもの でしょうかね。  mail の誤送信で慌てて LAN ケーブルを引っこ抜くという joke を良く目にしますが、この joke が傍証になっているように、いき なり回線を切られたらそこで作業を中断するのが自然だと考える人 の方が多いんじゃないでしょうか。 >このあたり詳しくないので、現象だけ。 >PuTTY/ssh2で、さくらインターネットのレンタルサーバー(FreeBSD 4.10-RELEASE-p5) >にログインすると、.profile が読まれ、ログアウトすると .bash_logout が読まれます。 >psで見ると bashの名前は -bash になってます。  う、調べてみたら OpenSSH にも「UseLogin」という option が ありました。多分本家の SSH にもあるんでしょう。sshd 側の設定 次第では login 出来てしまうようですね。  security 的には余り奨められた設定じゃないように思えますけ ど、さくらインターネットではそうせざるを得ない理由が何かある んでしょうかね? -- しらい たかし