持田@NETside です。

>  bash は端末制御が雑ですね。longjmp(3) で逃げてる実装が多い
> ので、それだと端末設定までは戻ってくれない訳で。Linux Zaurus

 なるほど。私の経験は、コマンドライン編集で横スクロールした時に
表示と挿入位置がおかしくなるというのですね。まあ、zsh でも
そういうのが全然無い訳ではありませんが。

>>あと bash は、.profile や .bashrc の役割分担がよくわからない。
>>対話式かどうかも自力判別しないといけないみたいだし。
> 
>  .profile は login shell 用で、.bashrc はそうじゃない時用で
> す。man page にもはっきりと書かれていますけど、どこが判りに
> くいでしょうか?

zsh% PS1="[0]%% "
[0]% mkdir t; cd t
[0]% for i in login cshrc zlogin zshenv zshrc bash_profile bashrc; do
  echo "echo -- $i" > ./.$i
done

[0]% HOME=`pwd` csh -l
-- cshrc
-- login
% ^D

[0]% HOME=`pwd` csh
-- cshrc
% ^D

[0]% HOME=`pwd` csh -c ':'
-- cshrc

[0]% HOME=`pwd` zsh  -l
-- zshenv
-- zshrc
-- zlogin
nodename% ^D

[0]% HOME=`pwd` zsh
-- zshenv
-- zshrc
nodename% ^D

[0]% HOME=`pwd` zsh -c ':'
-- zshenv

 状況によって「追加で」読んでくれるという強い思い込みがあったので、

[0]% HOME=`pwd` bash -login
-- bash_profile
bash$ ^D

[0]% HOME=`pwd` bash
-- bashrc
bash$ ^D

[0]% HOME=`pwd` bash -c ':'

実際に上記のような echo を仕込んで初めて、「どちらかしか読まない」と
いうことがわかったと。で、結局、環境定義は .bashrc に書いて
.bash_profile の先頭で .bashrc を読み込む、って大抵やりますよね?
そのあたりがちょっと csh->tcsh->zsh と来た身には違和感があります。

>  対話式かどうかは bash の内部状態で持ってますので、調べよう
> とすれば判る筈ですよ。例えば $PS1 とか $- とか。

 あと test -t 0 というのもどこかに例示されてました。それも含めて、
いろんなファイルを読んでくれる割りには、「自力」でなんだなぁ、と
いうことです。

>> 昔は、zsh や tcsh はバイナリサイズがデカかったのでそれなりに
>>「お下品」と思って使ってましたが、今はどれもデカいですよねぇ。
> 
>  bash がデカいのは機能が多いからだけじゃなくて、上の adhoc

 いや、昔の(つっても SunOS 4.1.x くらい)/bin/sh や /bin/csh は
小さかったのに、最近のシステムの bash や ash のはデカいなぁ、と
いうつもりでした。

-- 
持田 修司 NETside Technologies Inc.
          -- Equal Opportunity for All Good Architectures, NetBSD. --