回答:
違いは、基本的に、オペレーティングシステムレベルの仮想化とハイパーバイザーベースの仮想化の違いです。
起動したとき bash
Windowsの[スタート]メニューから、Ubuntuの完全なコマンドライン環境にアクセスできるテキストウィンドウが表示され、そこから任意のユーザランドのUbuntuパッケージをインストールできます。
従来のVMで得られるものとは異なり、起動または実行するためのLinuxカーネルはありません。そのため、起動が速く実行が簡単です。 UbuntuのネイティブバイナリはWindowsカーネル(正確にはその新しいサブシステム)によって実行されるだけです。もう1つの違いは、Boxからのグラフィック統合がないことです。 VMでは、仮想ハードウェアのテキストおよびグラフィックコンソールのウィンドウ(またはフルスクリーン)表現にアクセスできますが、Windows bashでは、Windowsターミナルエミュレータからサーバーにリモート接続したように見えます。それでも起動した場合は、Linuxグラフィックアプリケーションを実行することができます。 X11
Windows上のサーバー。関与するLinuxカーネルがないので、あなたはあなたのハードウェアにアクセスするのにLinuxモジュール/ドライバを使うことができません、それはWindowsネイティブのものによってアクセスされるでしょう。これには多くの意味があります。例えば、シンボリックリンクのサポートや、長いファイル名とファイル名の大文字小文字の区別に関する問題、inotifyなどは現在ありません。実マシンや従来のVMのような起動シーケンスはありません。つまり、起動時に自動的にサービスが起動されることはありません。 bash
。 Dockerの起動と少し似ています bash
。
最後に、これは進行中の作業であるため、改善の余地がたくさんあります。そのサイトでユーザーが最も多く報告していることについて考えがあるかもしれません。 https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windows
よくある質問も見てください。 https://msdn.microsoft.com/ja-jp/commandline/wsl/faq
最初のユーザー要求「BashからWindowsプロセスを起動しましょう」は、Windows上で実行されているLinux VMからも実行できないものです。
これら3つはすべて、さまざまな用途や目的を満たすツールです。どれが部分的に嗜好であり、部分的に正しいかまたはツールの適切な選択であるかを決定する。
私はそれを使ったことはありませんが、私がWindows BASHについて読んだことのある、貴重なものではないことから、少しだけ孤立したBASHシェル環境です。たとえば、Powershellが行うシステムレベルの情報やAPIにはアクセスできません。それ ではない UNIX風を提供する コマンド 環境もSSHも提供しません。しかし、BATファイルと同じようにプログラムやアプリケーションを実行できますが、スクリプトはBASH構文を使用して書かれています。
Cygwinは、(多かれ少なかれ)完全なUNIXスタイルのPOSIX環境をライブラリベースで抽象化したものです。システムレベルの情報とAPIにアクセスできます。 もし そのようなインターフェースは書かれており、多くのものが持っています。それは、UNIXスタイルの環境にもっと似ているように感じますが、「ウィンドウ」を収容するためになされる必要がある明らかな適応があります。例えば。 DのようにWindowsドライブにアクセスするには /cygdrive/d/
。パス内のディレクトリ区切り文字は /
のではなく \
ネットワークドライブへのアクセスは //host/share/path...
私は仕事で毎日それを使っています、そして私はそれが私のUNIXスタイルの考え方に非常に役立つと思います。
仮想マシンでのLinuxの実行は完全なインストールであり、ネットワーク、キーボード/マウス、メモリなどの特定の定義済みの点を除いて、ホストシステムから完全に分離されています。
ls
または tr
。私は間違っていてうれしいです - これらのユーティリティは私にとってそれをより有用にします