Re: tcsh -> zsh
しらいです。
In article <ul8vf7iv6fh.fsf@pine.yorie.netside.co.jp>,
MOCHIDA Shuji <mochid@netside.co.jp> wrote:
>持田@NETside です。
>なんかが使えないこと。それと、端末の扱いがちょっと違うような気がします。
bash は端末制御が雑ですね。longjmp(3) で逃げてる実装が多い
ので、それだと端末設定までは戻ってくれない訳で。Linux Zaurus
で suspend から復帰出来ないとゆーのも有名な話だし。
bash の設定っていうのは、最初に設計ありきではなくて後付け
でわらわら機能追加していった結果なので、そういう adhoc さの
無い zsh から見ると杜撰な点がどうしても目立ってしまいます。
まぁ歴史的経緯からどうしようもないんでしょうけど、bash の
source を一通り眺めるだけで bug が幾つも見つかるので、どっか
で一度一から設計し直すべきかも知れませんね。
# 例えば $() の中に case statement を書けないとゆー bug は、
#parser の設計を根本的なところからやり直さないと回避出来な
#い筈。
>あと bash は、.profile や .bashrc の役割分担がよくわからない。
>対話式かどうかも自力判別しないといけないみたいだし。
.profile は login shell 用で、.bashrc はそうじゃない時用で
す。man page にもはっきりと書かれていますけど、どこが判りに
くいでしょうか?
確かに最近だと SSH みたいなのが主流になってきて「login」と
いう概念に拘る理由が希薄になってきてはいるでしょうけど、判ら
ないことはないと思います。
対話式かどうかは bash の内部状態で持ってますので、調べよう
とすれば判る筈ですよ。例えば $PS1 とか $- とか。
bash-2.05$ echo /$PS1/$-/
/\s-\v\$ /himBH/
bash-2.05$ bash -c 'echo /$PS1/$-/'
//hBc/
bash-2.05$
# -i が interactive。-H と -m はそれぞれ history と job の
#拡張機能で interactive shell だと自動的に有効になるんで付
#いてきてます。
> 昔は、zsh や tcsh はバイナリサイズがデカかったのでそれなりに
>「お下品」と思って使ってましたが、今はどれもデカいですよねぇ。
bash がデカいのは機能が多いからだけじゃなくて、上の adhoc
な設計というのが一因になってます。場当たり的に付足すから似た
ような関数があっちにもこっちにも散財してます。
--
しらい たかし
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