WindowsでBashスクリプトを実行する方法はありますか?[閉まっている]


100

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


3
@Rajishもういらない…
msanford 2014年


1
@msanford、これは意味がありません。複製がクローズされている間、このスレッドが存続するのはなぜですか?
パセリエ

@Pacerier modは質問を削除しない傾向があるためほぼ確実にその作成者によって重複が削除されました。それはおそらく私のコメントが言及していたことです。著者がそれを削除した理由はわかりません。また4年前です。
msanford

回答:


80

Cygwinをインストールします。これには、他の多くのGNUおよびUnixユーティリティの中にBashが含まれています(これがないと、bashが非常に役立つとは考えられません)。

別のオプションは、bashとawkなどのより重要なユーティリティの小規模なセットを含むMinGWのMSYSです。個人的には、Cygwinを選択しました。これには、PerlやPythonなど、私がなくては生きていけないような重いツールが含まれているからです。

更新:この回答に興味があり、MS-Windows 10を実行している場合、MS-Windows 10には「LinuxのWindowsサブシステム」機能があり、これを有効にすると、Ubuntuのユーザーモードイメージをインストールできます。その後、Bashを実行します。これは、Bashスクリプトのデバッグと実行のためにUbuntuとの100%の互換性を提供しますが、このセットアップはWindowsから完全にスタンドアロンであり、DashFS機能によるファイルへの制限付きアクセスを除いて、Bashスクリプトを使用してWindows機能(プロセスやAPIなど)と対話することはできません。


2
詳細については、Linux用のWindowsサブシステム(WSL)のドキュメントを参照してください。
ストーマ

1
WSLは今... :( Windowsの10 Sで廃止しまった
ハビエル・ガルシア・マンザノ

2
非推奨ではありません。これは、安価なWindows「Sモールエディション」を購入した場合に取得できない機能の1つにすぎません。また、Home Edition、IIRCでは利用できません。
ガス2018

Gitを使用すると、ウィンドウ内のどこからでもバッチファイルを簡単に実行できますyoutube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

@MuhammadFaizanKhan-WindowsへのGitポート、および他のいくつかの「コマンドライン指向」アプリケーション(注目すべき例としてGithubデスクトップ)にも、BashのWindowsポートが付属しています。これらは、多くの場合、MinGWポートです(つまり、Posix互換性のためにMinGWおよびMSYSを使用してコンパイルされています)。具体的には、Git for Windowsのインストールを確認すると、mingw32基本的にMSYSを含むディレクトリが表示されます。したがって、WindowsのGitはMinGWで、Git(MSYSインストーラーではオプション)と「より優れた」インストーラーが含まれています
。superuser.com

30

私が見つけることができる最高のオプションはGit Windowsです。インストールして右クリックし、「Git Bash Here」をクリックすると、bashウィンドウが開きます。ここに画像の説明を入力してください

これにより、次のようなbashウィンドウが開きます。 ここに画像の説明を入力してください

Linuxのコマンドは動作します...

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


これ-それはとても簡単なのですか?
Kalpesh Soni 2016

yupは本当に便利です
Garvit Jain 2017

4
シェルだけが必要な場合は、Gitの追加の膨張なしでMinGWをインストールすることもできます。
Stefan Z Camilleri 2017年

あなたはここで、この1分間のチュートリアルを見ることができますyoutube.com/watch?v=7keNZT9579k
ムハンマドFaizanカーン

25

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

Cygwinは全体としてより優れたツールキットですが、ウィンドウとの分割が原因で、驚きの問題に直面しています。これらのソリューションはどれもネイティブLinuxシステムほど優れていません。

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


またはCoLinux:colinux.org
Guss

colinuxは64ビット(まだ)では機能しません
hexicle '19

win-bashプロジェクトの後継者を知っている人はいますか?それはもはや積極的に開発されておらず、bash v 1.14(この投稿の時点では適切なbashはv 4.4です)でスタックしていません
Bjartr


@SpencerRathbunそれはWindows 10でのみ実行されます。たまたまWindows 7で実行されます。また、LinuxとWindowsの実行可能ファイルとパスを混在させるとどのように機能するかもわかりません。 。
Bjartr 2016年

11

最適なオプションは?Windows 10. Native Bashのサポート!


2
いいえ、最適なオプションではありません。ウィンドウをbashではなく、Linuxをそのまま実行します-そのbashからWindows実行可能ファイルを起動することはできません(回避策がない限りcbwin...
ankostis

「最良の」オプションはおそらく好みの問題です。だから多分あなたは正しいです。ただし、Windows PCで(ほとんどの場合)bashスクリプトを実行できます。
Paul0515

1
ホストOS(Windows)との対話を試みない限り、仮想のすべてのbashスクリプトを実行できます。WSL bashは、元の ELFバイナリ(つまりUbuntu)を実行できる軽量の仮想化サブシステムですが、それをエスケープすることはできません。
ankostis

10

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


CygwinでUNIXシェルを実行するには、どのパッケージをインストールする必要がありますか?
タワー

@rFactor Cygwinページには、必要なすべてのコンポーネントを含むWindowsインストーラーが含まれています。
Spencer Rathbun

Cygwinサイトには、移植されたものとそのインストール方法が説明されています。シェルが必要な場合は、基本的なCygwinインストールで十分です。
Michael Shopsin

9

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

私はCygwinの大ファンではないので(確かに本当に強力だと思います)、Windowsでbashスクリプトを実行すると、完璧にインストールする必要はありません。


1
私はgit-extensionsとは何なのかわかりませんが、その説明には、gitのグラフィカルユーザーインターフェイスであると記載されています。このツールからシェルスクリプトをどのように実行しますか?おそらく、それらをmsys bashで実行するつもりですか?
悲惨な変数

確認のために-git-extensionsにはbashのコピーが含まれており、パスに設定されます。私はbashpowershellインスタンスから試し、失敗し、git-extensionsをインストールして再試行しましたが、うまくいきました。
rtpHarry 2015年

4

ネイティブで実行するには、Cygwinを使用する必要があります(Windowsを使用しないと、私はこれを使用できません)。つまり、すぐに、Cygwinの場合は+1になります。それ以外のものは文明化されません。

しかし、言われているように、私は最近、ユーティリティの組み合わせを使用して、BashスクリプトをWindowsに簡単に移植して、Linux以外の同僚がGNUユーティリティでより適切に処理される複雑なタスクを簡単に実行できるようにしました。

通常、一方のペインで元のスクリプトを開き、もう一方のペインでBatchファイルを書き込むことにより、非常に短時間でBashスクリプトをBatchに移植できます。私が使用するツールは次のとおりです。

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

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

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

次に、必要な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端末エミュレータ。

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


1

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

残念ですが、コンパイルされたものがまだ見つかりません...


3
Windows上のPOSIX sybsystemは廃止されました[1]。未変更のUbuntu-bashを実行するための「Drawbridge」軽量仮想化システムに基づく「Linux用のWindowsサブシステム」に置き換えられています。しかし、いくつかのニュアンスがあります。たとえば、このシステム内に入ると、Windows実行可能ファイルを呼び出すことができなくなります![1] blogs.msdn.microsoft.com/wsl/2016/04/22/...
ankostis

@ankostis、実際には、CUで次のことができます...
Paul0515
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.