rcpで気になるメッセージが出る

このQ&Aのポイント
  • UNIX上で簡単なシェルスクリプトを実行すると、command not foundというメッセージが出てきますが、実行は正しく行われています。
  • シェルスクリプトを実行すると、目的通りにファイルがコピーされますが、最後にUX:csh:ERROR:: Command not foundというメッセージが表示されます。
  • どのコマンドが実行されているのか、またはスクリプトに何かが実行されているのか不明です。
回答を見る
  • ベストアンサー

rcpで、気になるメッセージが出る

UNIX上で、ごくごく簡単なシェルスクリプトを作って、実行すると、結果はきちんと実行されるのですが、なぜか、command not foundが出てきます。 シェルは次のようなものです。 ------------------------------ #!/bin/csh `rcp -pr host2:/tmp/data /mydir` ------------------------------ 結果は、きちんと、host2の/tmp/data以下が、ローカルマシンの/mydir以下にコピーされるのですが、なぜか、最後に次のメッセージが出てきます。 ------------------------------ UX:csh:ERROR:: Command not found. ------------------------------ きちんと目的通り実行されているのに、なんで? と思って気になるのですが、これはいったい何のコマンドを実行しようとしているのか、それとも私のスクリプトでは、暗黙の何かが実行されてしまうのか、ご存じの方は教えて下さい。よろしくお願いします。

  • pokuda
  • お礼率51% (158/305)

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

  • ベストアンサー
  • tailkuppa
  • ベストアンサー率53% (52/98)
回答No.1

コマンド文字列を逆引用符(バッククオート) でくくっているからでしょう。 逆引用符でくくると、その中身を実行した結果がもう一度使用されます。 この場合、裸で出てくるので、結果の文字列がもう一度実行されてしまいます。 rcp でリモートからのコピーを実行した結果の文字列(成功したのであれば、多分なにも出ないので空の文字列)がもう一度/bin/sh で実行されようとして、そんなコマンドがない、と言われて失敗しているのだと思います。 perl などでシェルコマンドを実行させる場合は`` で囲まないとそこをシェルで実行させることはできませんが、この場合はすでにシェルスクリプトとして起動されているので、コマンドを`` で囲む必要はありません。

pokuda
質問者

お礼

回答、どうもありがとうございます。 しっかりシェルスクリプトの勉強をしたことがないので、そんな仕組みになっていたとは知りませんでした。ご指摘の通り、perlでやっていたことをそのままシェルにしていました。勉強になりました。

関連するQ&A

  • tcshなのにスクリプト構文中のsetenvが動かない。

    シェルスクリプトを勉強しております。 testと名付けたファイルに スクリプトの構文の頭に#!/bin/tcshを記入せず setenv(csh系だけで動くコマンド)のみを記載して 実行権を与えて ./test と打つと etenv: command not found になってしまいます。 ここで、やりたいことは文頭にシェルを指定せずに 実行をすると、現在のtcsh上で実行されるはずなのに setenv: command not found になってしまうところに疑問がございます。 ログインシェルをtcshに変えたりも試してみても 疑問が解決しないので、なにかアドバイス等でもいただけないでしょうか。よろしくお願い致します。

  • cygwinでcshが認識されず困っています

    初めまして。現在、研究に必要なため、windows上でcygwinを使っております。 cshで書いたスクリプトを実行すると、 bash: csh: command not found と出てきてしまいます。 数週間前にPCに不具合があり、リカバリしたためcygwinを入れ直したところ、 このような事態になりました。 以前と同じ設定をしたので、原因がわかりません。 見当違いの方法かもしれませんが、 起動時のシェルをtcshに変えてみても状況は変わりませんでした。 UNIX等についてあまり詳しくないため、大変困っております。 cygwinを使ってらっしゃる方、UNIXに詳しい方、教えて頂けませんでしょうか? よろしくお願いいたします。

  • シェルファイル内での「setenv」、「unsetenv」の実行

    (UNIX環境) シェルファイル内にて 「setenv LANG ja_JP.SJIS」 「unsetenv LANG」 と記述し実行しようとしたのですが、 「setenv:not found」 「unsetenv:not found」 というエラーが出力されてしまいます・・・。 ちなみにコマンドをそのまま実行した場合は正常に処理されます。 kshにて実行されている為で、cshで実行しなければならないということでしょうか? 現在デフォルトにて何シェルが起動しているのか、どのようしたら分かるのでしょうか? 「env | grep csh」 と実行してみると「SHELL=/user/bin/csh」という結果がえられるのですが・・・。

  • 変数$importfileに第1引数($1)のファイルPATHを表示したい

    下記のスクリプトを書きましたが ./aa.sh: line 6: =/tmp: command not found と言われるのはなぜですか? 変数$importfileに第1引数($1)のファイルPATHを表示したいです。 1 #/bin/bash 2 3 echo $# 4 if [ $# -eq 1 ] 5 then 6 $importfile=$1 7 echo "$importfile" 8 else 9 echo "argv file notfound" 10 exit; 11 fi 12 実行結果 ./aa.sh /tmp 1 ./aa.sh: line 6: =/tmp: command not found

  • Windows7でrsh,rcpを実行したい

    Windows7 Professional x64だとSUAが使えないのでフリーのrsh等を探してます。 cygwinのsshもよいのですが、手ごろに使えるrsh,rcpの利用をしたいと思ってます。 Linuxマシンのシェルスクリプトの実行やファイルのコピーを行いたいと思ってます。 情報やホームページなどご存じの方ご教授ください。

  • PHPからシェルスクリプトを実行

    サーバ:XREA・CORESERVER PHPからシェルスクリプトを実行することは可能ですか? exec関数などがsafemodeでは動かないとのことなので、phpをcgiとして動かしているのですが、 どうもうまくいきません…。 というのも、lsなどのコマンドを実行しても、command not foundになってしまいます。 どなたか分かる方いらっしゃいますか?

    • 締切済み
    • PHP
  • MinGW,msysでCスクリプトの実行

    windows上でCシェルスクリプトで書かれたファイルを実行する必要が生じました。 これまではcygwin上で難なくやっていたのですが、cygwinは大きいので、これをやめてMinGWにしたため、Cシェルスクリプトが流れなくて困っています。MinGW、msysにはCシェルは無いようです。そこで、MinGW,msys,minttyの環境下で以下のようにやってみたのですが、これでよいのでしょうか? (1)MinGW,msys,minttyをインストール(Bシェルの環境ができる) (2)tcsh.exeをwebからダウンロード(ftp://ftp.funet.fi/pub/unix/shells/tcsh/) (3)tcsh.exeをmsysの/binに入れて、cshにハードリンクを張る(#ln tcsh.exe csh) これで簡単なCシェルスクリプトは流れるようですが、そのCシェルスクリプトの中で、さらにスクリプトファイルを実行させるようなスクリプトはうまく流れません。結局、試行錯誤の結果、以下のように、csh,shを頭に付加してようやく流れるようになりました。 ・元のファイル(script-a,bは流れない) #!/bin/csh -f ........... ./script-a(Cシェル) ./script-b(Bシェル) ........... ・修正後(ようやく流れた) #!/bin/csh -f ........... csh ./script-a(Cシェル) sh ./script-b(Bシェル) ........... 何故このようにしなければいけないのか?また、minttyでCシェルスクリプトを流す方法はこれでよいのか?(他に方法はないのか?)ご教示頂ければと思います。 当方、シェルスクリプトは全く素人で質問自体が的外れかもしれませんがよろしくお願いします。

  • 権限の違うシェルスクリプトの実行

    3つのシェルスクリプトがあります。 ●root権限で実行  aaa.csh ●ユーザ指定権限で実行 bbb.csh ●root権限で実行 ccc.csh この3つのシェルスクリプトはaaa.csh →bbb.csh →ccc.cshの順番でバッチ処理として cronに設定したいのですが、 権限が違うのでroot権限のcrontabとユーザ指定のcrontabに それぞれ設定しなくてはいけません。 あまりスマートではないかと思い、 何かよい方法はないかと質問させて頂きました。 3つのシェルスクリプト1つシェルスクリプトにまとめてroot権限のcrontabに設定してしまう方法とかどうでしょうか? ちなみにスクリプトの処理の内容は単純なファイルコピーなどです。 意味分かりますでしょうか? よろしくお願いします。

  • ログイン時にエラーメッセージが出ます。

    redhatlinux(2.4.18-14)で、telnetでログイン時に以下のようなメッセージが出るようになってしまいました。 ************************* -bash: id: command not found -bash: [: =: unary operator expected -bash: id: command not found -bash: dircolors: command not found -bash: id: command not found -bash: id: command not found -bash: id: command not found -bash: [: too many arguments ************************* そもそも、昨日boot中に誤って電源を落としたことが影響しているような気がします。が、なぜかパスが通っていないため、manページも見られませんし、viも使えない状況です。こういう場合どうすればよいのでしょうか? 初歩的な質問かと思いますが、よろしくお願いします。

  • r\ command not found

    cygwinからスクリプトを実行すると 'r\' command not found と表示されてしまいます。 これを表示させないようにするにはどうしたらよいでしょうか。