Cygwinがインストールされるとき、Windowsで起動するバッチファイルがあります。しかし、Cygwinを起動せずに "./script"を実行しないでスクリプトを実行したい場合はCygwinは1つのバッチファイルからスクリプトを実行していますか?
これを行うにはどうすればよいのですか?
と同じように、クリックするとCygwinが開き、シェルスクリプトが実行されます。
Cygwinがインストールされるとき、Windowsで起動するバッチファイルがあります。しかし、Cygwinを起動せずに "./script"を実行しないでスクリプトを実行したい場合はCygwinは1つのバッチファイルからスクリプトを実行していますか?
これを行うにはどうすればよいのですか?
と同じように、クリックするとCygwinが開き、シェルスクリプトが実行されます。
部分はあなたの選択したインストール場所に応じて異なる場合がありますcygwin。
どのような種類のシェルスクリプトですか?バッシュ? bashスクリプトを実行する必要がある場合は、ショートカットを使用してbash.exeを実行してください。ターゲットは次のようになります。
C:\cygwin\bin\bash.exe foo.bsh
bash.exeへのパスは、cygwinがインストールされた場所によって異なります。 (binディレクトリがパス環境変数にある場合、パスはまったく必要ありません。)
必要に応じて、同じことをバッチスクリプトで実行できます。コマンドラインは上記の "target"と同じです。
EDITコメントに基づいて(まだ仮定のbash):ちょうど入力あなたのバッチスクリプト(.BAT)におけるよう
は、[OK]を:
bash.exe script.txt
あなたが追加する必要があります"bash.exe"へのパス。 "bash.exe"がどこにあるのかわからない場合は、質問に記載した "Cygwin.bat"ファイルを開きます。それはchdir
コマンドのパスを持つ必要があります。 (注:Cygwin.batは対話モードでbash.exeを実行しているだけで、実際には "cygwin"という名前のファイルは実行されません)。
"script.txt"にパスを追加する必要がありますバッチスクリプトと同じディレクトリに置いてください。
これもまた、バッチスクリプトの代わりにショートカットでも機能します。
set PATH=C:\cygwin\bin;%PATH%
c:\cygwin\bin\bash.exe c:\path\to\foo.bsh
「C:\ cygwinの\ binに」、「foo.bsh」を実行し、以下の内容でバッチファイルを作成し、それを実行するには
まあ、シェルスクリプトを実行したいです。しかし私はCywginを開いて、それを実行するためにすべてのものを入力する必要はありません。むしろcygwinを開くためのバッチファイルを実行し、可能であればその方法で実行したいと思います。 – Aaron
@Aaron - すべてのものを入力しますか? Cygwinでスクリプトを実行するために使用するコマンドライン引数を含むコマンドラインは、ショートカットまたはバッチスクリプトに追加できます。 Cygwinは開きませんが、cmdウィンドウが開きます。スクリプトの実行が終了すると終了します。 –
私はcygwinで動作するシェルスクリプトを持っています。私はそれをすべて入力するのではなく、私のためにすべてを行うバッチファイルを作成できるかどうか疑問に思っていましたか?しかし、バッチファイルでcygwinを使う方法がわかりません。 – Aaron
あなたはBASH(または任意のSH-バリアント)にCMDからトランポリンにこのような何かを試してみてください:
: <<TRAMPOLINE
@echo off
bash -c "exit 0" || (echo.No bash found in PATH! & exit /b 1)
bash "%~f0" "%*"
goto :EOF
TRAMPOLINE
#####################
#!/bin/bash -- it's traditional!
echo "Hello from $SHELL"
これはうまく動作しましたが、ファイルを保存するときにUNIXスタイルの行末を使用しなければならず、bashスクリプトが幸せであることを確認しました。 – gdt
私はそれをせずに作業できるようにするためにオースティンヘイスティングスによって与えられた答えに拡大したいと思いますCygwinを使用し、batファイルを使用してディレクトリ設定を行います(別の "Start in"パスのショートカットでも使用されます)。変更はbashへの完全パスを含むようになります。オプション-l
を使用して、パスと環境とともにbash設定を適切に行い、現ディレクトリを(shift
を使用して)ポップされた最初の引数としてbashに渡します。ファイル内でUnix改行を使うことを忘れないと、多くのエラーが発生します。また、ANSIの代わりにUTF8を使用してください。
: <<TRAMPOLINE
@echo off
C:\cygwin\bin\bash -c "exit 0" || (echo.No bash found in PATH! & exit /b 1)
setlocal EnableDelayedExpansion
for %%i in (%*) do set _args= !_args! "%%~i"
C:\cygwin\bin\bash -l "%~f0" "%CD%" %_args%
goto :EOF
TRAMPOLINE
#####################
#!/bin/bash -- it's traditional!
cd "$1"
shift
echo Working from $PWD
編集:引数をbashに正しく渡すようにトランポリンコードを修正しました。 BATファイルには "$ @"のbashに相当するものはなく、各引数を処理するループが作成され、bash.exeに渡されます。スペースで引数を適切に処理するようになりました。
のgit-bash.exe(path_to_your_bash_file>)
P.S.:.BATするには、以下の行を記述し、任意の.BATファイルから "your_bash_file" を実行するには
どのようにしてこのコマンドを終了できますか? 'TRAMPOLINE'の後に' exit/B'を置くことはできません。 –
'TRAMPOLINE'行が' bash'に入った後で 'exit'と入力するだけです。 'exit/B'は' cmd'コマンドです。 – galmok
私のケースでは、「exit」が動作していないように見えたので、私は尋ねました。私はログインシェル(-I)を作成していて、 '.bashrc 'などの中にバックグラウンドでぶら下がっていた余分なbashインスタンスを作成していたため(cmdウィンドウを強制終了させないようにする) 。 –
Windows Gitがインストールされている必要があります
また、minttyウィンドウでもこのスクリプトを開くには、これが(@ galmokの答えに基づいて)トリックを行います。
: <<TRAMPOLINE
@echo off
C:\Users\user\Downloads\cyg-packages\bin\bash -c "exit 0" || (echo.No bash found in PATH! & exit /b 1)
setlocal EnableDelayedExpansion
for %%i in (%*) do set _args= !_args! "%%~i"
C:\Users\user\Downloads\cyg-packages\bin\mintty.exe -i /Cygwin-Terminal.ico C:\Users\user\Downloads\cyg-packages\bin\bash -l "%~f0" "%CD%" %_args%
goto :EOF
TRAMPOLINE
#####################
#!/bin/bash -- it's traditional!
cd "$1"
shift
echo Working from $PWD
vim "[email protected]"
注:私のユースケースは、最後にvim
への呼び出しがある理由であるVisual Studioの、からターミナルのvimを開く必要がありました。その後、バッチファイルは終了します。
はいこれが動作します..ありがとう – dhroove