2004年09月14日

tcsh

私が 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/UNIX
コメント

tcshでインライン処理をするやり方は知らないんですが、shといえばzshがお勧めですよ〜。
zshの素敵さはどこそこに書いてあるので、すでに使った事あったら読み飛ばしてくださいな。
基本はbshですが、cshのいいとこもプラスしてさらにzsh独自の便利機能を+した感じでしょうか。
ただ以前ソラリスで使おうと思ってmakeしたら失敗し、しかもめんどくさくて原因調べず投げたのは秘密です。
まぁ職場のサーバにシェルを勝手にインストールできるのであれば上記のような悩みは発生してない気も・・。
下手にzshに慣れると他のshが(イライラして)使えなくなるので、自由にシェル変えられる環境じゃないのであればお勧めしません。。

Posted by: 青 : 2004年09月15日 09:29

zsh はこれ以上のものが無いという意味の z から命名されたということと、
B shell 系だと言うことだけは知ってましたが、
使ったことはありません。
ってことで調べてみました。
http://www2u.biglobe.ne.jp/~hsaka/docs/shell.html
http://www.gentei.org/~yuuji/rec/pc/intro-zsh.html

よさそうですねー。
とはいってもサーバに入れるわけにはいかないので、
やっぱり tcsh ばかり使うことになりそうです。
# そのためにわざわざなれたわけですし(笑)

Posted by: k-square : 2004年09月15日 23:34
コメントする









名前、アドレスを登録しますか?