こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

makeでcshのコマンド展開を使用したい

makeの中で例えば
/bin/rm -f AAA*.{s,loc}
のようなコマンド展開を記述した所、
solaris版 のgnu makeではこれが認識されず、一方linux版のgnu makeでは認識されるという現象が出ております。
[SOLARIS]
AAA*.s AAA*.loc共に削除されない
[LINUX]
AAA*.s AAA*.loc共に削除される

特にエラーメッセージも出ないので原因が分かりませんが、
make "{s,loc}"という記法はcshのものなので、makeから呼ばれるshellに原因があるのでは無いかと想像していますがどうなのでしょうか?
もしshellに起因する問題である場合、makeの中で用いられる展開をcshに行わせる為の指定方法としてどのようなものがあるのでしょうか?

以上宜しくお願い致します。

投稿日時 - 2004-07-22 01:52:37

QNo.935170

暇なときに回答ください

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

なぜcshの記法にそれほどまでにこだわるのでしょうか?

ログインシェルとしてcshやtcshがよく利用されているのは事実ですが、これはshが持つコマンドライン編集機能が乏しいためであって、総合的にはcshはすぐれているわけではありません。
むしろ、cshをスクリプトシェルとして利用するのは好ましくありません。

Linuxでうまくいったのは、shの実体がbashで、たまたまその記法を受け付けただけです。
Solaris含め一般的にはshはごく普通の Bourne shell でしかないので、csh由来の記法は受け付けません。

素直に、shの記法で書いてください。

投稿日時 - 2004-07-22 02:22:23

あなたにオススメの質問