• ベストアンサー

shellから起動したkterm上でコマンドを実行させる方法

たとえば、以下の3つの情報、 while(1) ps ;sleep 10 end 同様に whils(1) ls <RET> sleep 10 <RET> end <RET> while (1) date <RET> sleep 10 <RET> end <RET> を別windowでモニターさせるためにwindowを起動してコマンドを実行させるためのシェルスクリプトを作成させたいのですが、 kterm -e ls などとすると実行した時点で終了してしまいます。 また上記をls.csh などとして kterm -e としてみると kterm: Can't execvp bbb.csh などとエラーが出てしまいます。 どのようにしたら宜しいのでしょうか? 以上宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

スクリプトがcシェルだということを認識できてないような気がします。 $ kterm -e /bin/csh ls.csh とcshの引数としてファイル名を指定するか、ファイルの先頭に #!/bin/csh と記述しておけばcシェルスクリプトだということを認識してくれます。 cshコマンドのパスは $ which csh で自分の環境のものを確認できます。

tk_1980024
質問者

補足

有難うございます。上手く行きました。やはりcshである事を認識できなかったようです。 実は ls.csh の先頭には #! /bin/csh -f を指定していた筈なのですが。。。 補足でもし分かれば教えて頂きたいのですが、ls.csh相当の記述を別のプログラムを呼ぶのではなく、ktermを起動するshellスクリプトの中で記述しようとするとどのような記述になるのでしょうか? 以上、宜しくお願いいたします。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>補足でもし分かれば教えて頂きたいのですが、ls.csh相当の記述を別のプログラムを呼ぶのではなく、 >ktermを起動するshellスクリプトの中で記述しようとするとどのような記述になるのでしょうか? cshでなく、shを使えば、 kterm -e sh -c "while sleep 10;do ps;done" kterm -e sh -c "while true;do ps;sleep 10;done" のように出来ます。cshはマルチステートメント(1行に複数コマンドを書く)機能が弱いので駄目です。

tk_1980024
質問者

お礼

有難うございます。この辺りにやはりシェルスクリプトの限界があるのですね。 クリアになりました。どうも有難うございます。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

#1の方の補足です。 ファイルの先頭に #!/bin/csh と書いて、 kterm -e ls.csh で実行するためには、事前に、chmod +x ls.csh と実行可能ファイルにする必要があります。 kterm -e /bin/csh ls.csh の場合はその必要が無いのでわかりやすいと思います。

tk_1980024
質問者

お礼

ありがとうございます。 kterm -e /bin/csh xxx で成功しました。 ありがちなミスを明確に指摘して頂き助かりました。 有難うございました。

関連するQ&A