Sender: katsu@FLAGSHIP Newsgroups: fj.unix.shells Subject: Re: [Q]=?iso-2022-jp?b?GyRCJW0lMCUkJXMlNyUnJWskSCQ9JCYkRyRKJCQlNyUnGyhC?= =?iso-2022-jp?b?GyRCJWsbKEI=?= References: <412F63F8.562CDA02@dd.iij4u.or.jp> <3990355news.pl@insigna.ie.u-ryukyu.ac.jp> <412FFE94.E9A95FA1@dd.iij4u.or.jp> From: WATANABE Katsuhiro Date: 24 Sep 2004 07:49:32 +0900 Message-ID: Organization: An individual person. User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Lines: 67 Xref: FLAGSHIP mine:459 フォローアップの遅さが議論の妨げになっていたらごめんなさい。 以前、perl を実際にログインシェルにした経験を投稿したことがあり ます。 http://katsu.watanabe.name/article/140.txt 記事 で "Anonymous Buddha" さんいはく > Perl をシェルとして使用する事が出来るとは知りませんでした。。 > 動作としては、普通にログイン後、perlを起動した状態と相違はないのでしょう > か? どのように起動されようとも perl は perl で相違ないはずです。その ため、対話性を実現するための細工が必要となります。 perl も ruby も、オプションや引数なしで起動すると、プログラムを 1回読み込んで結果を返すと終了してしまいます。シェルとして対話的 な環境にするには、いわゆる read-eval-print loop を埋め込んで listener を仕立てなければなりません。逆に言えば、eval(と read と print)がある言語なら、この手で何でもシェルになりうるでしょう。 対話性については別案もあります。デバッガは、その要求を考えると対 話環境になっている場合が多いはずです。そこで、それをシェルにして しまうのです。冒頭に挙げた記事はそれに沿ったものでした。 もう一つ問題となるのは、-c オプションでしょう。シェルというもの は、色々なコマンドの中から逆に呼び出されてお使い役を頼まれること もあります。こうしたお使い役のシェルとログインシェルとは、陽に陰 にセットされた $SHELL 環境変数の媒介により、同じものが使われるの が普通[*1]です。そして、シェルがお使い役にまわる際には、-c オプ ション付で呼ばれる状況が多いのです。Unix の世界で本気でシェルと 名乗るためには、-c に備えたいところでしょう。少なくとも、-c 付で 呼ばれた時にエラーや事故を起こすようではいけません。 ただし、一部のコマンドは、$SHELL -c は sh の文法を解釈するものと 決め付けて特定の文字列を埋め込んでしまっているので、完全な対応は 難しいと思います。例を少し挙げてみれば、 ・echo ... という文字列を渡す。メタキャラクタの展開を期待して。 ・<,> を含む文字列を渡す。リダイレクションを期待して。 ということが起こり得ます。こうした固定された制約と自分好みの言語 の文法との間で、どこかにギャップが残るはずです。-c の扱いは、他 の種類の代替シェルではどのように解決してるんでしょうかね。 [*1: ログインシェルとお使い役シェルを同一にする大義] sh 系統以外の代替シェルに入れ込んでログインシェルに選ぶぐらいの人 なら、vi の ! コマンドや emacs の shell-command-on-region を実行 する時だけ別なシェル(sh)の文法や意味に従うというのは嫌でしょう。 記事 <3990355news.pl@insigna.ie.u-ryukyu.ac.jp> で kono@ie.u-ryukyu.ac.jp (Shinji KONO) さんいはく > Perl をlogin shell にするのは、Perl shell っていうプロジェクト > があるみたいですね。Pell shell module ってのもあるようだな。 面白そうなので検索してみたら、 http://www.gregorpurdy.com/gregor/psh/psh-1.8.html の一番最後 OTHER PERL SHELLS のところに、Perl 的なシェルが9種類 も並べて比較されていました。だれしもが考えるということは、それだ けそそられる欲求なんだなという感想を持ちました。 -- 渡辺克宏 http://katsu.watanabe.name