3

Windows XPオペレーティングシステムを使用していて、cygwinがCドライブにインストールされています。

同じディレクトリにmakefileとbuild.shというbashスクリプトが含まれているディレクトリパスに直接cygwinにログインする必要があります。そこで、元のcygwin.batファイルを変更し、次のように行を追加しました。

@echo off

C:
chdir C:\cygwin\bin

bash --login "/cygdrive/E/scheme_31july/build/build.sh"

このbatファイルをダブルクリックすると、スクリプトが実行されているのがわかりますが、cygwinシェルでは表示されませんが、Windows cmdシェルでは、makeがcygwinにバンドルされているため、「ターゲットを作成するルールがありません」などの「make」コマンドでエラーが発生します。

また、デフォルトのcygwin.batファイルを使用してcygwinに明示的にログインし、cygwinシェルで次のコマンドを実行してスクリプトを実行すると、スクリプトはエラーなしで実行されます。

基本的には、cygwinプロンプトを手動で開いて次のようなコマンドを入力する代わりに、PCのどこにでも保存できるようにbatファイルを作成したいと思います。

$ cd /cygdrive/E/scheme_31july/build/
$ sh build.sh

自動的に発生するはずです。私はそうすることができるように座ります。

よろしく、ハーシット

4

1 に答える 1

4

No rule to make targetmakeが間違ったディレクトリで実行されているように聞こえます。makeそれ自体が利用可能であり、意図したとおりに実行されているようです。

これを試して:

bash --login -c "cd /cygdrive/E/scheme_31july/build/ && sh build.sh"

これにより、--loginセッションが開始され(cygwinプロンプト環境で期待されるすべての設定とツールにアクセスできるようになります)、指定されたシェルコマンド(要求されたcdおよびsh)を実行します。これらの2行を別のスクリプトファイルに書き込み、のフルパスの代わりにその名前をbashに渡すこともできますbuild.sh

また、ファイルにアクセスして、そこから実行するcdこともできます。ログインセッションに入ったときにパスを変更しようとするかどうかわからない。このアプローチと上記のアプローチの両方で、がなくても動作するかどうかを試すことができます。C:\scheme_31july\buildbatbashbash--login

@echo off
C:
cd C:\scheme_31july\build
C:\cygwin\bin\bash.exe ./build.sh

その後、セッションをインタラクティブにするかどうかはわかりません。上記の場合、bashはスクリプトの完了後に終了し、ウィンドウを閉じることさえあります。これを回避するには、readにを追加する必要がある場合があります。build.shいくつかのコマンドを実行した後にインタラクティブにしたい場合は、bashbashのオプションを使用していくつかのコマンドを実行してから、インタラクティブにすることができます。--rcfile

于 2012-08-09T15:33:14.203 に答える