私が Linux / UNIX で最初に使ったシェルは bash (B shell 系) でした。
bash をはじめて使ったおかげで、B shell 系の shell script の書き方や、
環境変数の書き方に普通になじむことが出来たのですが、
その代わりに、csh 系の使い方がわからない人になってしまいました。
特に環境変数の設定や shell 変数の設定がわからなくて、
ずっと苦手意識をもっていました。
そして、そんな私の新しい職場はサーバ OS のほとんどが Solaris (SunOS) で、
デフォルト shell が tcsh です (csh 系)
しかーも、サーバによっては bash 自体が入ってません (T_T)
というわけで、利用できないものは仕方ないので、
仕方なく思いつつも積極的に tcsh を勉強することにしました・・・。
現在、会社に入って約 1 ヶ月。
history からの inline 置換実行機能はまだ使いこなせませんが、
tcsh の環境設定と、補完機能を使う分には特に問題なくなりました。
それもこれも、丹念な .cshrc を書いたおかげ(笑)
プロンプトも今まで使っていた bash そっくりにしてあります。
こうなってくると complete とかで補完対象を設定できる tcsh は bash よりも便利に
感じられるようになってきます。
そして、 bash と tcsh が区別無くつかえるようになったころ、
ワナが訪れるという仕掛けです。
# マーフィーの法則ですね・・・ (-_-;;
かかったワナは csh 系では inline での shell script が書けないというもの。
私は shell のコマンドラインで
$ for i in $( find ./ -type f -print )
> do
> basename=$( basename $i )
> mv $i /tmp/$basename
> done
なんてことを普通に書いたりしてたのですが、
これが使えないんです。
しかも、ほとんど無意識に書くので、
tcsh 上で書いて、改行を入れた瞬間にエラーが返ってくる
というのが何度もあります。 (サルでごめんなさい)
あぁー、tcsh でこの辺ってうまいやり方無いのかなー?
今はそのときだけ /bin/sh を起動してその上で書いてます。
(まさに inline shell script )
きっと明日からもサルで inline shell script を書いちゃうとは思いますが、
少しずつそれが減るように (謙虚?) 気をつけていきたいところです。
さぁー、あしたもがんばろー。
Posted by k-square : 2004年09月14日 23:59 | Linux/UNIXtcshでインライン処理をするやり方は知らないんですが、shといえばzshがお勧めですよ〜。
zshの素敵さはどこそこに書いてあるので、すでに使った事あったら読み飛ばしてくださいな。
基本はbshですが、cshのいいとこもプラスしてさらにzsh独自の便利機能を+した感じでしょうか。
ただ以前ソラリスで使おうと思ってmakeしたら失敗し、しかもめんどくさくて原因調べず投げたのは秘密です。
まぁ職場のサーバにシェルを勝手にインストールできるのであれば上記のような悩みは発生してない気も・・。
下手にzshに慣れると他のshが(イライラして)使えなくなるので、自由にシェル変えられる環境じゃないのであればお勧めしません。。
zsh はこれ以上のものが無いという意味の z から命名されたということと、
B shell 系だと言うことだけは知ってましたが、
使ったことはありません。
ってことで調べてみました。
http://www2u.biglobe.ne.jp/~hsaka/docs/shell.html
http://www.gentei.org/~yuuji/rec/pc/intro-zsh.html
よさそうですねー。
とはいってもサーバに入れるわけにはいかないので、
やっぱり tcsh ばかり使うことになりそうです。
# そのためにわざわざなれたわけですし(笑)