WindowsでBashのようなシェルを使用するにはどうすればよいですか?


53

私はLinuxとMacを使用していますが、すぐにいくつかのコマンドラインを教えます。

Windowsに何をインストールして、基本的なMac / Linux Bashシェルに最も似たターミナルウィンドウを表示できますか?

可能であれば、.bash_aliasesも定義できるようにしたいと思います。


3
以前puttyは実際のLinuxサーバーに接続していました。Windowsではcygwin、不器用なインストールエクスペリエンスが原因で、使用することに消極的でしたが、常に消極的でした。しかし個人的には、msysよりも使いやすく、vmよりも高速であることがわかりました。cygwinをインストールすると、単にディレクトリをコピーするだけで十分な移植性が得られますが、Windowsのユーザー名に基づいて(少なくともデフォルトでは)各マシン/ユーザーに新しいユーザー名が作成されます。ただし、cygwin / msysはカスタムの「ディストリビューション」とみなされる可能性があるため、一部の[オプション]コマンドスイッチが欠落している可能性があることに注意してください。それらをテストします。
n611x007

5
Microsoftは、Windows 10の次のアップデートにBashが含まれることを発表しました。
ドミトリネステルック

回答:


42

あなたは、インストールすることができますCygwinのMSYS / MinGWのを、またはあなたが(例えば、使用して仮想マシンに完全なLinuxディストリビューションをインストールすることができVirtualBoxのを)。


別のコンピューター(ポータブル)からコピーした135 mb(25 mbパック)のcygwinを使用しました。新しいコンピューターの現在のユーザーに基づいて新しいユーザー名を作成し、それ以外は完全に機能しました。現在のcygwinは800 mbで、ビルド環境、200〜300 mbのソースコードなどがあります。
n611x007

2
注:WindowsでネイティブユーザーモードのLinuxシェルとツールを実行できる「Linux用Windowsサブシステム」をインストールできるようになりました。以下の回答を参照してください...
MrHinsh-マーティンヒンシェルウッド

48

Linux用のWindowsサブシステムをインストールできるようになりました。これにより、WindowsでネイティブユーザーモードのLinuxシェルとツール実行できます。これにより、Windowsで直接Bashシェルを実行でき、Ubuntuに基づいています。

これは、Windows 10のAnniversary Update(2016)で導入されたもので、デフォルトでは有効になっていません。Windows 10 Anniversary Updateマシンで新機能を有効にするには、次の手順を実行します。

  1. [設定]-> [更新とセキュリティ]-> [開発者向け]に移動し、[開発者モード]を選択します
  2. コントロールパネル-> [プログラムと機能]を​​クリックし、左上のペインで[Windowsの機能の有効化または無効化]をクリックします。
  3. ダイアログボックスで、[Linux用Windowsサブシステム]をオンにして、[OK]をクリックします
  4. マシンを再起動
  5. 「bash」を検索してクリックします。コマンドプロンプトが開き、「Ubuntu on Windows」をインストールするかどうか尋ねられ、「y」に進みます。
  6. インストール後、UNIXユーザー名とパスワードの作成を求められます
  7. これで、bashシェルを使用する準備ができました。

少し歴史があります。2015年のプロジェクトAstoriaは、AndroidアプリをWindowsに持ち込むために開始され、Windows Subsystem for Linux(WSL)と呼ばれるLinuxサブシステムを構築しました。プロジェクトAstoriaは、UWP(Universal Windows Platform)戦略を弱体化したため、やがて削除されましたが、一部は保持され、Windowsのbashの基礎を形成しました。コース中、MicrosoftはCanonical(Ubuntu Linuxの作成者)と協力して、サポートされているすべてのツール/バイナリでネイティブイメージを提供しました。

詳細については、
https
//blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/ https://blogs.windows.comをご覧ください。 / buildingapps / 2016/03/30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4(ビデオ)



私はこの答えが好きです!
ピーター

1
@Peterありがとう、昨日簡単に試してみて、gcc / g ++を起動し、xserverでFirefoxを動作させることができました(かなり遅いかもしれませんが、CPU使用量を抑えるかもしれません)。 「スクリーン」は機能しませんでしたが、bashの次のアップデートではまだベータ版であるため、状況は改善されます。とはいえ、Windowsでbashをネイティブで使用できるのは素晴らしいことです。それは多くの可能性を開きます。栄誉Microsoft!
ニモ

Powershellでこれを実行することもできます(管理者として実行)。Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"そして、Windowsストアから次のいずれかをインストールします
。Ubuntu

18

以下に、2018-05の時点で利用可能なオプションのリストと、2019-01の期間中のWSLに関するいくつかの更新、およびそれぞれの詳細を示します。

際立ったオプション

CygwinBabun

Cygwinは以下を提供します。

  1. bashシェルとMinttyターミナル、
  2. Windows上で実行するためにコンパイルされた広範な一般的なLinuxユーティリティ
  3. LinuxプログラムをWindows上で実行できるようにする包括的な互換性レイヤー。

Cygwinは、LinuxアプリケーションのWindowsへの移植を簡単にすることを目指しています。CプログラムがUnix用に設計されており、パイプ、Unixスタイルのファイルおよびディレクトリアクセスなどの機能を使用する場合、Cygwin用にコンパイルでき、Cygwinはコードと外部 OS(Windows)の間の互換性レイヤーとして機能します。これにより、同じCプログラムをほとんど変更することなく、LinuxとWindowsの両方で動作させることができます。したがって、Linuxプログラムの膨大なリストが遵守され、Cygwinのインストール時に実行できます。ただし、これらのプログラムのユーザーであるあなたは、おそらくUnixに精通している必要があります。たとえば、あなたは次のように引数を渡す必要があるかもしれない/cygdrive/c/autoexec.batの代わりに、c:\autoexec.batと(Unixの線路終端と出力に対処する準備ができている\n)の代わりに、Windowsの回線終端装置(\r\n)。

すべてのCygwinプログラムのコレクションはリポジトリを構成し、Cygwinには従来のLinuxパッケージマネージャーがありませんが、非常に直感に反する方法でいつでもこのリポジトリからプログラムを追加、削除、更新できます(Cygwinのsetup.exeを実行するにはインストールが完了したはいつでも)

BabunはCygwinであり、フル機能のパッケージマネージャー(協定)、そのシェル、git、自動更新、およびプラグイン指向アーキテクチャのoh-my-zshを備えています。デフォルトのシェルはzshですが、簡単にbashに切り替えることができます。余分な重量を気にしないなら、バニラCygwinからの素晴らしいアップグレードのように思えます。

Mingw-w64

Mingw-w64は以下を提供します。

  1. bashシェル、
  2. かなりの量のLinuxユーティリティ、
  3. Linux互換性レイヤーなしで(または最小限のレイヤーで)実行されるアプリを構築するためのSW開発ツールチェーン。

MinGWは、主にWindows用のソフトウェア配布および構築プラットフォームです。特に、GCC、make、bashなどのGNUコンパイラツールのWindows移植版です。かなりの量のGNUツールと最小限のUnix互換性レイヤーが含まれています。

Mingw-w64とCygwinの主な違いは優先順位にあります。Cygwinは、すべての主要なUnixシステムコールとライブラリの完全な実装で構成される完全なPOSIX互換性レイヤーを提供することを目指しています。パフォーマンスは互換性に次ぐものです。MinGWはパフォーマンスを目的としているため、Windowsで簡単におよび/または十分に高速に実装できない特定のPOSIX APIを提供しません。また、MinGWの主なターゲットはS / W開発者です。それにもかかわらず、カジュアルなユーザーもそのシェルとユーティリティに含まれる汎用を楽しむことができます。

MSYS2およびGit for Windows

MSYS2は以下を提供します。

  1. bashシェルとMinttyターミナル、
  2. かなりの量のLinuxユーティリティ、
  3. OSプログラムをインストールするためのフル機能のコマンドラインパッケージマネージャー
  4. 包括的なLinux互換性レイヤーの有無にかかわらず、アプリケーションの構築をサポートするCygwinとMinGWの両方のパーツ。
  5. ソフトウェアリポジトリとパッケージマネージャ(pacman)。これにより、Windowsでソフトウェアを簡単にインストール、使用、ビルド、および移植できます。

MSYS2は、主にソフトウェア配布とMinGWのようなWindows用の構築プラットフォームですが、Cygwinの方法とMinGWの方法の両方を組み合わせています。MSYS2を使用して、「MinGWプログラム」または「MSYS2プログラム」を作成できます。後のリンクは、MSYS2の互換性レイヤー(msys-2.dll)へのリンクです。このリンク自体は、Cygwinの互換性レイヤーの開発にいくつかの追加/変更を加えたものです。ただし、2つのプロジェクトのリポジトリは完全に無関係です。そのため、MSYS2とCygwinの両方が提供するもののgrep.exe、完全に異なるバージョンを持つ場合があります。

Git for Windowsは、gitがインストールされたMSYS2のみか、少なくとも MSYS2に基づいています。同じシェル(bash)、ターミナル(Mintty)、パッケージマネージャー(pacman)を提供します。これは、Windows上で主要なGitを実行するための最も一般的な方法であるように思われ、それに伴い素敵なUnix環境が得られます。

Linux(WSL)用のWindowsサブシステム

WSLは、まったく異なる方法を使用して同じ問題を解決します。WSL上のLinuxシステムで実行するのとまったく同じコードを実行します。これは、カーネル呼び出しをインターセプトし、それらをWindowsカーネル呼び出しに変換します(Wineの反対です)。もちろん、翻訳は完璧ではありませんが、マイクロソフトはベータ版の警告を削除しました。2018年以前はWindows ServerでWSLを使用できなかったため、あまり調査していません。とにかく、Ubuntuのストックインストールで見つかると思われるほとんどのCLIグッズを備えた素敵なbashシェルを入手できます。Microsoftは「WSLはGUIデスクトップまたはアプリケーションのサポートを目的としていない」と公式に述べていますただし、その方法に関する非公式の指示があります。現在のところ(2018年初頭)、WSLの主な欠点は次のとおりであると思われます:a)画面のレンダリングとディスクへのアクセスが非常に遅いb)WindowsからWSL(Linux)ファイルを編集することになっていない c) 64ビットWindowsでのみ実行されます。ここだcygwinのと古いけど素敵な比較(リッチ・ターナーは、WSLチームの一員であることに注意してくださいは、彼がWSLに関する有用な情報をたくさん掲載しています)

コモングラウンド

上記のツールのほとんどは、WSLを除き、多くの共通技術(ライブラリ、実行可能ファイル、概念)を共有しています。たとえば、MinGWに付属するbashシェルは、それ自体がcygwin.dllのフォークであるmsys-2.dllに依存しています。混乱の余地は十分にあります:-)

より多くのオプション

Cmderは、Windows用の素敵な端末とbashのようなシェルを提供します。主なコンポーネントは Conemu(ターミナル)です。その上で、それが追加されますクリンクを提供する強力なバッシュスタイルのコマンドライン編集、カスタムプロンプトレイアウトとMonokaiのカラースキームを。ネイティブのWindowsコンソールプログラムとの高度な(または完全な)互換性があります。

Scoopは、多くのGNUツールを含む多くの有名なクロスプラットフォームプログラム用のコマンドラインパッケージマネージャーを提供します。事前にコンパイルされたパッケージをダウンロードします。シェルもターミナルも提供せず、代わりにWindowsのcmd.exeの下で実行されます(すべての制限がありますが、ネイティブWindowsコンソールプログラムとの完全な互換性もあります)。コンパイラスイートも含まれていません(ただし、もちろんコンパイラと開発ツールはscoopでインストールできる典型的なパッケージです)。Scoopがインストールするプログラムの多くは、MinGW / MSYSプロジェクトから直接提供されるか、ツールを使用してビルドされています。

さらに多くのオプション

以下のソリューションはアクティブではないようであり、私はそれらをテストしたことはありませんが、他の人のために仕事をしているようです:

Gow(Windows上のGnu)は、シェルなしのCygwinの軽量な代替です。便利なWindowsインストーラーを使用して、ネイティブのwin32バイナリーとしてコンパイルされ、windowsのcmd.exeから利用可能な、約130の非常に便利なオープンソースLinuxアプリケーションをインストールします。可能な限り小さく設計されています(約10 MB)。

UnxUtilsGnuWin32 UnxUtilsは、一般的なGNU UnixのようなユーティリティのネイティブWin32へのポートのコレクションであり、実行可能ファイルはMicrosoft Cランタイムmsvcrt.dllのみに依存します。主要部分といくつかの更新をダウンロードする必要がありますGnuWin32にはUnxUtilsよりも新しいバージョンがありますが、サポートファイル(DLLなど)が必要です

MSYSMinGWのは、ように見えているされて廃止され、私はそれらを見たことがないので、MSYS2&MinGWの-W64で。

CygwinおよびMSYS2に関するいくつかの一般的な問題

端末について

Minttyは、Cygwin、MSYS2およびそれらの派生物で使用される端末です。Windowsのネイティブコンソールプログラムを実行している場合、Windowsコマンドプロンプトの簡単な代替ではないことに注意してください。単純なテキスト出力を備えたプログラムは通常正常に機能しますが、インタラクティブで全画面のプログラムはしばしば問題を抱えています。読むよりMinttyのホームページ上にもエントリを読んで「のGit Bashのから実行すると、一部のネイティブのコンソールプログラムは仕事をしません」Windowsのよくある質問のためのGit。このエントリには、この種の問題に直面したときに行うべき推奨事項があります。

これらの問題を回避するには、いくつかの方法があります。

  • winptyユーティリティを使用して問題のあるプログラムを実行します。これにより、より良いmintty端末を使い続けることができますが、多くのプログラムの回避策が必要な場合は扱いにくくなる可能性があります。
  • [cmd.exeを使用]し、「クイック編集」、適切なサイズとスクロールバック、適切なUnicodeフォントに設定します。それでも、[cmd.exe]の他の癖と一緒に暮らす必要があります。
  • Conemuをインストールして使用します

その他の問題

留意すべき2つの最も重要なことは次のとおりです。

  1. 電源とデバッグが難しい問題の間にはトレードオフがあります。ソリューションが強力であればあるほど、最初はLinuxレイヤーとは無関係と思われる方法でも、より多くのものがうまくいかない可能性があります。

  2. Linuxの経験があまりない場合は、Cygwin / MSYS2 / MinGWなどのより強力なソリューションを使用しないでください。

UnxUtilsとGnuWin32の電力は最小ですが、頭痛を引き起こす可能性も最小です。Cygwinと同様のものは、力と頭痛の両方でトップになります。Cmderは中間のどこかにあります。したがって、最も強力なソリューションが必要な場合は、十分な睡眠をとり、完全に集中してください。新しく不安定な可能性のあるものをテストしている間は、強力なソリューションを使用しないでください。また、cmderのような中程度の複雑さのソリューションはきれいではないことを忘れないでください。

WindowsコマンドをシャドウするLinuxコマンドの問題は、Cygwin / MSYS2 / MinGWなどのソリューションでデバッグが困難なトラブルの一般的な原因です。次に例を示します。timeoutコマンドを使用していた.batファイルがありました。Cygwinの下で実行すると、タイムアウトもLinuxコマンドですが、構文が異なるため失敗します。問題を発見した後、.batファイルの先頭にPATH = ...を追加して、windowsコマンドが優先されるようにしました。しかし、その後、さらに不可解な「入力リダイレクトはサポートされていません」エラーが発生し、理由を見つける前に回避策を講じました。

cmderの問題の例を次に示します。私はCmderでWindowsバージョンのunisonを実行していましたが、いくつかの特別な条件下ではエラーメッセージがまったく表示されずにハングしていました。同じコマンドがcmd.exeの下で常に完全に実行されていました。おもしろいことに、Cygwinでも完全に実行されていました(実際、Unicodeファイル名を持っている場合、cmd.exeはしばしば不正なUnicodeテキストを表示するため、Cygwin端末はcmd.exeよりも優れています)。

このガイドについて

2017-05年、私は昔からツールの一部を使用していたにもかかわらず、主にCygWinとcmderを使用していましたが、上記のツールの違いを理解していないことにうんざりしました。それで、私は数時間かけて風景を調べました。このガイドは、私が保管したメモの結果です。私はこの分野の専門家ではありませんが、関連するすべての情報を見つけ、批判的な目でそれを読み、最も重要な部分を明確に提示するように努力しました。何かが間違っていると思われる場合はコメントしてください、私はそれを修正するために最善を尽くします。

最後に、いくつかの用語の問題に対する謝罪:このテキストでは、UNIXまたはPOSIXの代わりにLinuxという用語を時々使用します。私はそれらが同じではないことを知っていますが、そのような長距離からトピックに近づくとそれらを区別することは非常に困難です。難しくないときでも、私が持っていないのには時間がかかります;-)


2
これは素晴らしい答えです。調査結果と経験を共有していただきありがとうございます。
ダニエルソコロースキ

包括的な答えですがpacman、そうではありませんpackman
エイドリアンギュンター

どうしてこれが受け入れられた答えではないのでしょうか。このすべてを詳しく説明していただきありがとうございます。
42.

10

私は、あなたがダウンロードしてインストールすることをお勧め最小限のセットのMinGWとMSYSのも最小限のセットを。MinGWインストーラーは、インストールするパッケージを選択するための簡単なGUIを提供します。必要なものがすべてBASHである場合、インストールには数メガバイト以上かかりません。

更新:はるかに高度なMSYS2に移行しました。パッケージ管理用のArchLinux pacmanツールの移植版があります。MSYS2インストーラーには必要なものがすべて揃っているだけでなく、完全に完璧なminttyが使用されています。


10

ありますクリンク利用できるGitHubので。フックライブラリを使用して、Windowsコマンドプロンプトに自身を統合します。

プロジェクトの説明から:

Clinkは、ネイティブのWindowsシェルcmd.exeを、GNU Readlineライブラリの強力なコマンドライン編集機能と組み合わせて、豊富な補完、履歴、および行編集機能を提供します。

(そのため、プログラミング言語としてのbash機能や他のUnixグッズは提供されません)

私は職場でLinuxを使用していますが、Bashから期待するように動作しないcmdでタブ移動することがあります。Clinkを使用すると、これらの欠点のいくつかを克服できます。

最近、私はまた、Linuxシステム機能をエミュレートし、その上にある種のシステムを提供するflinuxと呼ばれる、まだ可能性のない「できる」プロジェクトを発見しました(現在はArch Linuxに基づいています)


Clinkは実際に言語を変更しますか、それともcmd.exeの何かを改善するだけですか?これは答えから完全に明確ではありません。
サルシュボルシュ

Ctrl + Rを使用した逆検索、PATH検索コマンド補完など、通常の* nixシェル機能のいくつかを使用できます。-
アンドレアス

ですから、bashの実装ではありませんよね?
セージボルシュ

いや cmd.exeサイトで説明されているように、拡張機能;)
アンドレアス

7

faffaffaffが言っことに加えて、Git for WindowsにはBashといくつかの一般的なLinuxコマンドラインプログラム(Vimsedgawkなど)が含まれています。MSYSに基づいています。ただし、プログラムのバージョンは古いです。たとえば、Bashはバージョン3.1です。Cygwinには、より新しいバージョンのユーティリティがあります。

また、ターミナルエミュレータとしてConEmuを使用します(主にVimの構文強調表示、タブページ、および簡単なコピーと貼り付けのため)。console2は別の人気のあるターミナルエミュレータでもありますが、試していません。


ところで、ConEmuはMSYS2のインストールも認識し、Clinkの統合を可能にします。
アンドレアス


1

私はちょうどCygwinを内部的に統合したBabunを試しました。

ダウンロードファイルはわずかに大きく、約250 MBです。ただし、インストールは簡単です。何も設定する必要はなく、それだけで機能します!


Babunにはcygwin全体が含まれていますが、これは本当にめちゃくちゃ大きいです。インストールプロセスは少しハッキングされています(現在、zipアーカイブはchromeによって危険なファイルとしてブロックされています)。しかし、これまでのところ、私が見つけた最高のターミナル交換。
トムバート

バブンは本当に遅かった。私はconemuとgitのシェル使用に切り替え
wordsforthewiseを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.