Re: tcsh -> zsh
大谷です。
In article <d2bqo2$qpe$1@nsvn02.zaq.ne.jp>
shirai@unixusers.net (Takashi SHIRAI) writes:
>>不満というか、持田さんの書かれた .bashrc の読み込み条件と同じような理由ですが、
>>他のシェル(csh,tcsh,zsh)だと、.logout 相当が実行されるので、
>>bashも同じだろうと思ったところが違ったので、「あれ?」と思ったわけです。
>>これは.bashrcの件と違ってmanにも書いてないし。
>>
>>manでは、ログインシェルが exits する時 .bash_logout を読むと書いてある。
>
> shell builtin の「exit」なり「logout」なりを実行して shell
> を終了するのが「ログアウト」ですよね?十歩譲って EOF で終了
> するのまで含んだとしても、端末強制終了まで「ログアウト」と呼
> ぶのは一体どこの文化でしょうか?
ログアウトと呼ぶとは思っていませんし、今までそのように書いてもいません。
しらいさんと同じ意味でしかログアウトという言葉を使っていませんよ。
でも、シェルはexitしたことになると思います。
シグナルを起因としてそれをトラップして後処理してから終了するのは
exitと呼ばないということは無いですよね。
で、そのとき .bash_logout を読むと書いてある。
> csh なり zsh なりがその時についでに .logout を実行するのは、
> どちらかと言えばお節介だと思いますけどねー。
tcshの場合は、通常のログアウトと、タイマーによるautologoutが
.logoutの中でシェル変数で区別できるようなんで、SIGHUPでの
終了の場合もautologout扱いでnormalと区別できるのかもしれません。(未確認)
> プロセスにとって端末を失うというのは普通は予期せぬアクシデ
> ントの筈です。そういう時に、危険回避のための子プロセス心中は
> 理解出来ても、通常終了用の .logout 実行というのは如何なもの
> でしょうかね。
異なったプログラムであれば異なった思想に基づいて異なった仕様を
持ってもおかしくないのでべつにそれでもかまいません。
でもそういう仕様であれば、man に、「exitした時」じゃなくて
「logoutした時」と書くべきでしょうね。
man の trap ... 0 の説明も、on exit で実行されると書いてあり、
実際、SIGHUPで終了する時にも trap ... 0 で指定したコマンドは
実行されます。
同じexitという言葉が使われているのに .bash_logoutは読まれずに、
trap ... 0 は実行されるのでは言葉の意味が不統一です。
--
tksotn
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