Re: tcsh -> zsh
持田@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. --
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