2013-06-15 11:48:25 +0000 2013-06-15 11:48:25 +0000
55
55
Advertisement

WindowsでBash風のシェルを使うにはどうすればいいですか?

Advertisement

私はLinuxとMacを使っていて、近々コマンドラインのことを教えようと思っています。

Windowsに何をインストールすれば、基本的なMac/LinuxのBashシェルに最も似たターミナルウィンドウが得られるのでしょうか?

できれば.bash_aliasesも定義できるようにしたいのですが。

Advertisement
Advertisement

回答 (8)

48
48
48
2016-03-30 19:45:06 +0000

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

これはWindows 10でAnniversary Update(2016年)で導入されたもので、デフォルトでは有効になっていません。Windows 10 Anniversary Updateのマシンで新機能を有効にするには、以下の操作を行ってください。

1.Navigate to Settings -> Update & Security -> For Developers and select “Developer mode” 2. Control Panel -> Programs and Features and click “Turn Windows Features on or off” on the top left pane 3. ダイアログボックスで “Windows Subsystem for Linux "にチェックを入れ、"Ok "をクリックします。マシンを再起動する 5. bash "を検索してクリックすると、コマンドプロンプトが開き、"Ubuntu on Windows "をインストールするかどうかを尋ねてくるので、"y "を続けてください。インストール後、それはUNIXのユーザー名とパスワード 7を作成するように求められます。あなたは今、bashシェルを使用する準備ができています

歴史の少し、2015年に戻ってプロジェクトAstoriaは、WindowsにAndroidアプリをもたらすために開始され、彼らは目的のために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 (動画)

42
42
42
2013-06-15 11:50:58 +0000

Cygwin ](http://en.wikipedia.org/wiki/Cygwin) や MSYS/MinGW をインストールすることもできますし、完全な Linux ディストリビューションを仮想マシンにインストールすることもできます (例えば、 VirtualBox を使用して)。

21
Advertisement
21
21
2017-05-09 14:27:32 +0000
Advertisement

ここでは、2018-05時点で利用可能なオプションのリストを、2020-01時点でのWSLに関する豊富なアップデートとともに、それぞれのオプションについて少し詳しく紹介しています。

目立つオプション

* Windows Subsystem for Linux(WSL) **

WSLはますます成熟してきており(Microsoftはずっと前にベータ警告を落としています)、インストールも非常に簡単なので、ほとんどの場合、非常に良い(ベストではないにしても)オプションです。これは、他のほとんどのオプションとは異なる方法で問題を解決します。Linuxシステム上で実行するのと全く同じバイナリコードを実行します。2020-01までは、WSLはカーネルコールを傍受して、Windowsカーネルコールに変換しています(Wineの逆を考えてみてください)。WSLの現在のベータ版では、軽量なVMで本物のlinuxカーネルを実行しているので、これは変更されるでしょう。

とにかく、WSLを使うと、純正のUbuntuインストールで見られるCLIのほとんどすべての機能と、リポジトリから利用可能なほとんどすべてのものをapt installにするオプションを備えた素敵なシェルを手に入れることができます。Microsoftは公式に “WSLはGUIデスクトップやアプリケーションをサポートすることを目的としていない” としていますが、その方法については非公式な指示があります。現時点(2020-01)では、WSLの主な欠点は以下のようになっているようです。

Cygwin Babun

Cygwin Babun

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 のような引数を渡して、Windows の行終端 (\n) の代わりに Unix の行終端 (\r\n) で出力を処理できるようにしておく必要があるかもしれません。

すべてのCygwinプログラムのコレクションはリポジトリを構成し、Cygwinには伝統的なLinuxパッケージマネージャがありませんが、非常に直感的な方法でいつでもこのリポジトリからプログラムを追加、削除、更新することができます(Cygwinのsetup.exeを_の後にいつでも実行します。

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

Mingw-w64

Mingw64 は以下の機能を提供します。

  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の両方のパーツ。ソフトウェアリポジトリとパッケージマネージャ (pacman) で Windows 上でのソフトウェアのインストール、使用、ビルド、移植を容易にします。

MSYS2 はまた MSYS2は主にMinGWのようなWindows用のソフトウェア配布・構築プラットフォームですが、Cygwinの方法とMinGWの方法の両方を兼ね備えています。MSYS2を使って“MinGWプログラム”“MSYS2プログラム”を作ることができます。後者はMSYS2の互換性層(msys-2.dll)へのリンクで、それ自体はCygwinの互換性層の開発を忠実に踏襲しています。しかし、2つのプロジェクトのリポジトリは全く関連性がありません。そのため、MSYS2とCygwinの両方がgrep.exeを提供していますが、全く異なるバージョンを持っている可能性があります。

  • Git for Windows ** は、単に MSYS2 に git をインストールしただけのものか、少なくとも MSYS2 を大きくベースにした のどちらかです。同じシェル (bash)、ターミナル (Mintty)、パッケージマネージャ (pacman) を提供します。これは Windows 上で支配的な Git を動かすための最もポピュラーな方法のようで、それと一緒に Unix 環境を手に入れることができます。

共通点

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

その他のオプション

さらに多くのオプション

下記のソリューションは有効ではないようですし、私はテストしたことがありませんが、他の人には有効なようです。

Cygwin と MSYS2 でよくある問題

端末について

Mintty は Cygwin, MSYS2 とその派生品で使われている端末です。Windowsネイティブのコンソールプログラムを実行している場合、Windowsコマンドプロンプトの代わりにはならないことに注意が必要です。単純なテキスト出力のプログラムは通常問題なく動作しますが、インタラクティブなものやフルスクリーンのものはしばしば問題があります。詳細は Mintty のホームページを参照してください Git for Windows FAQ のエントリ “Some native console programs don’t work when run from Git Bash” を読んでください。

この種の問題に直面したときの対処法はいくつかあります:

  • winpty ユーティリティを使って問題のあるプログラムを実行してください。これにより、より良い mintty 端末を使い続けることができますが、多くのプログラムで回避策が必要な場合、扱いづらくなる可能性があります。
  • [cmd.exeを使用]して、"クイック編集"、合理的なサイズとスクロールバック、適切なユニコードフォントを設定してください。cmd.exe]の他のクセと共存しなければなりません。
  • Conemuをインストールして使う。

その他の問題点

最も重要なことは以下の2点です。

  1. パワーとデバッグの難しさはトレードオフの関係にあります。

  2. パワーと問題のデバッグの難しさの間には、トレードオフの関係があります。

  3. Linux の経験が豊富でない場合、Cygwin/MSYS2/MinGW

UnxUtils や GnuWin32 のような強力なソリューションは使わないでください。Cygwinやそれに類するものは、パワーと頭痛の原因となる可能性の両方でトップになるでしょう。Cmderはその中間に位置しています。そのため 最も強力なソリューションを必要とするときは、十分な睡眠をとり、完全に集中してください。新しいものや不安定なものをテストしているときに、強力なソリューションを使うのは避けてください。また、cmder のような中程度の複雑さのソリューションは完璧ではないことを忘れないでください。

Linux のコマンドが Windows のコマンドに影を落とすという問題は、Cygwin/MSYS2/MinGW のようなソリューションではデバッグが困難なトラブルの一般的な原因となっています。例を挙げてみましょう。私はタイムアウトコマンドを使用している.batファイルを持っていました。timeoutもLinuxのコマンドですが、構文が異なるため、Cygwinで実行すると失敗してしまいます。問題を発見した後、.batファイルの先頭にPATH=…を追加して、windowsコマンドを優先させることができることがわかりました。しかし、その後、 さらに不可解な “Input redirection is not supported” エラーが出て、原因を見つける前に回避策を考えました。

ここにcmderの問題の例があります。Windows版のunisonをCmderで実行していたのですが、ある特殊な条件下では、_絶対にエラーメッセージが出ずにハングアップしていました。同じコマンドはいつも cmd.exe で完璧に実行されていました。面白いことに、Cygwinでも完璧に動作していました(実際、Unicodeファイル名を使用している場合は、cmd.exeよりもCygwinターミナルの方が良いでしょう。)

このガイドについて

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

最後に、いくつかの用語の問題についてのお詫びです。この文章の中で、私は時々UNIXやPOSIXの代わりにLinuxという用語を使っています。これらは同じものではないことはわかっていますが、このような遠距離からトピックに近づくときに、両者を区別するのは非常に困難です。難しいことではないにしても、私にはない時間がかかります。)

10
10
10
2013-10-30 12:46:07 +0000

最小限の MinGW と最小限のMSYSのセットをダウンロードしてインストールすることをお勧めします。MinGWのインストーラは、インストールしたいパッケージを簡単なGUIで選択することができます。BASHだけであれば、インストールには数メガバイトもかかりません。

UPDATE: 私は MSYS2 に移行しました。MSYS2 のインストーラは必要なものは全て揃っていますし、 mintty を使用しているので完璧です。

10
Advertisement
10
10
2013-11-20 01:00:47 +0000
Advertisement

また、Clinkもあります GitHub 。これはフックライブラリを使ってWindowsのコマンドプロンプトに統合します。

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

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

(そのため bash-as-a-programming-language 機能やその他の Unix の利点は提供していません)

私は仕事で Linux を使用していますが、時々 Bash に期待していたように動作しない cmd でタブ操作をしていることに気がつきます。Clink を使うことで、これらの欠点のいくつかを克服することができます。

最近、私は flinux という有望な、しかしまだ「万能」ではないプロジェクトを発見しました(現在は Arch Linux をベースにしています)。

7
7
7
2013-06-15 17:07:20 +0000

faffaffaffaffが言ったこと ](https://stackoverflow.com/a/17123343/1743811)に加えて、[ Git for Windows ](http://msysgit.github.io/)にはBashといくつかの一般的なLinuxのコマンドラインプログラム(例: Vim , sed , gawk )が含まれています。これは MSYS をベースにしています。プログラムのバージョンは古いですが、例えばBashはバージョン3.1です。Cygwin ](http://en.wikipedia.org/wiki/Cygwin) は、より新しいバージョンのユーティリティを持っています。

私はターミナルエミュレータとして ConEmu を使っています(主にVimのシンタックスハイライト、タブページ、コピーペーストを簡単にするため)。console2 ](http://sourceforge.net/projects/console/)も人気のあるターミナルエミュレータですが、試したことはありません。

2
Advertisement
2
2
2015-06-16 22:50:19 +0000
Advertisement

これは私が新しいWindowsマシンをセットアップするときに最初にすることの一つです。 Windowsの機能的で洗練されたコンソール

1
1
1
2015-06-19 15:44:31 +0000

Cygwinを内部的に統合したBabunで試してみました。)

ダウンロードファイルは250 MB程度と少し大きいです。しかし、インストールは簡単です。

Advertisement

関連する質問

3
6
10
19
3
Advertisement