web-dev-qa-db-ja.com

WindowsでBashスクリプトを実行する方法はありますか?

私はWindows 7 Ultimateを購入して使用していますが、これを使用してアプリケーションを開発したいと思っています。 (すべてのOSと同様に)欠点の1つは、Bashスクリプトを実行できないことです。いくつかのソフトウェアをインストールして、WindowsでBashスクリプトを実行する方法はありますか? 100%動作しない場合でも問題ありませんが、最も一般的な機能が利用可能である限り、すばらしいはずです。

91
Tower

Cygwin をインストールします。これには、他の多くのGNUおよびUnixユーティリティ(そのbashがとにかく非常に有用になることはありません)の中にBashが含まれます。

別のオプションは MinGWのMSYS で、これにはbashとawkなどのより重要なユーティリティの小さなセットが含まれます。個人的には、CygwinにはPerlやPythonなどの強力なツールが含まれているので、CSYSを好みました。MSYSはこれらを無視し、自分でインストールすることを想定しています。

Updated:この回答に興味があり、MS-Windows 10を実行している場合、MS-Windows 10には「 Windows Subsystem For Linux "機能-一度有効にすると、Ubuntuのユーザーモードイメージをインストールし、その上でBashを実行できます。これにより、Bashスクリプトのデバッグと実行に関してUbuntuとの100%の互換性が提供されますが、このセットアップはWindowsから完全にスタンドアロンであり、Bashスクリプトを使用してWindows機能(プロセスやAPIなど)と対話することはできません。 DrvFS 機能。

73
Guss

もう少しネイティブなものを探している場合は、 getGnuWin32 を使用して、移植されたすべてのUNIXコマンドラインツールをインストールできます。それに加えて winBash は、動作するUNIX環境のmostを提供します。 console2 を追加して、より良いターミナルエミュレーターを作成すると、Windowsでほとんど通知できません!

Cygwinは全体的に優れたツールキットですが、CygwinとWindowsが分かれているために、驚くべき問題に直面しています。ただし、これらのソリューションはどれもネイティブLinuxシステムほど優れたものではありません。

virtualbox を使用して、好みのディストリビューションでLinux VMを作成することを検討することもできます。ホストOSとフォルダを共有するように設定すると、真のLinux開発環境を使用してWindowsと共有できます。それらのEOLマーカーに注意してください。

24
Spencer Rathbun

私が見つけることができる最良のオプションは Git Windows ちょうどそれをインストールし、右クリックして「Git Bash Here」をクリックすると、bashウィンドウが開きます enter image description here

これにより、次のようなbashウィンドウが開きます。 enter image description here

そして、Linuxコマンドが動作します...

'sh'、 'vi'、 'ssh'、 'curl'などのコマンドを試しました。

17
Garvit Jain

Cygwin をいつでもインストールして、WindowsでUnixシェルを実行できます。 CygwinはWindow XPで広範囲に使用しました。

10
Michael Shopsin

Git-extensions( https://code.google.com/p/gitextensions/ )をインストールした後、コマンドプロンプトから.shファイルを実行できます。 (./script.shは必要ありません。bat/ cmdファイルのように実行します)または、MinGW Git bashシェルを使用して「フル」bash環境で実行することもできます。

私はCygwinの大ファンではないので(本当に強力だと確信しています)、Windowsでbashスクリプトを実行するのに最適です。

9

最良の選択肢は? Windows 10.ネイティブBashのサポート!

8
Paul0515

ネイティブで実行するには、おそらくCygwinを使用する必要があります(CygwinはWindowsを使用している場合にのみ使用できます)。だからすぐに、Cygwinの+1。それ以外は文明化されません。

とはいえ、そうは言っても最近、ユーティリティの組み合わせを使用してWindowsに簡単にPORT Bashスクリプトを移植し始め、反Linuxの同僚がGNUユーティリティで処理しやすい複雑なタスクを簡単に実行できるようにしました。

通常、一方のペインで元のスクリプトを開き、他方のペインでバッチファイルを作成することで、非常に短時間でBashスクリプトをバッチに移植できます。私が使用しているツールは次のとおりです。

GnuWin32よりもUnxUtilsの方が好きです。[間違っている場合は誰か修正してください] GnuWin utilsを通常インストールする必要がありますが、UnxUtilsはそのまま使用できるスタンドアロンのバイナリです。

ただし、CoreUtilsにはcURLなどの使い慣れた* NIXユーティリティが含まれていません。cURLは、Windows(curl.haxx.se/download.html)でも使用できます。

プロジェクト用のフォルダーを作成し、常にSET PATH =にします。 .batファイルで、基本的なCMDシェルコマンド以外のコマンドが参照されないようにします(また、バッチスクリプトが期待どおりに機能するためにプロジェクトフォルダーに必要な特定のUnxUtilsも参照されません)。

次に、必要なCoreUtils .exeファイルをプロジェクトフォルダーにコピーし、「。\ curl.exe -s google.com」などの.batファイルで参照します。

Bat2Exeプログラムは、魔法が起こる場所です。バッチファイルが完成し、正常にテストされたら、Bat2Exe.exeを起動し、プロジェクトフォルダーへのパスを指定します。 Bat2Exeは、その特定のフォルダー内のすべてのファイルを含むWindowsバイナリを作成し、最初の.batを使用してメインの実行可能ファイルとして使用します。生成される最終的な.exeファイルのアイコンとして使用する.icoファイルを含めることもできます。

これらの種類のプログラムをいくつか試しましたが、生成されたバイナリの多くはマルウェアとしてフラグが付けられますが、参照したBat2Exeバージョンは完全に機能し、生成された.exeファイルは完全にクリーンにスキャンされます。

結果の実行可能ファイルは、通常使用する多くのツールの機能を利用できることを除いて、通常のバッチファイルと同様に、ダブルクリックで対話的に実行するか、パラメーターなどを指定してコマンドラインから実行できます。バッシュで。

私はこれがかなり長くなっていることを理解していますが、少し脱線する可能性がある場合、PortaBashyを呼び出すバッチスクリプトも作成しました。これは同僚がポータブルCygwinインストールを含むネットワーク共有から起動できるものです。次に、%PATH%変数を通常の* NIX形式(/ usr/bin:/ usr/sbin:/ bin:/ sbin)などに設定し、Bashシェル自体を起動するか、より強力なかなりのMinTTY端末エミュレーター。

あなたがやろうとしていることを達成するための方法は、常に数多くあります。それは仕事に適したツールを組み合わせるだけの問題であり、多くの場合、個人的な好みに要約されます。

3
rubynorails

それを行う理論的な可能性がもう1つあります。WindowsのプロフェッショナルバージョンにはPOSIXサポートが組み込まれているため、bashはWindows用にネイティブにコンパイルできます。

残念ですが、私はまだコンパイルされたものを自分で見つけていません...

1
vines