Re: tcsh -> zsh
しらいです。
In article <u3bufeseb.fsf@anet.ne.jp>,
OOTANI TAKASHI <tksotn@anet.ne.jp> 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 的には余り奨められた設定じゃないように思えますけ
ど、さくらインターネットではそうせざるを得ない理由が何かある
んでしょうかね?
--
しらい たかし
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735