Microsoft は 2000 年代には Linux を非難していましたが、現在では Windows 上で Linux プログラムを実行する方法を模索することを止められないようです。 WSL (Windows Subsystem for Linux) は Windows 上で Linux ユーティリティを実行する主な方法でしたが、同社はいくつかの一般的な Linux コマンド ライン ツールをコマンド ラインと PowerShell に移植しました。私はそれらを試してみることにしました。
Windows 用 Coreutils とは何ですか?
Windows コマンドライン上の従来の Linux/Unix ユーティリティ
GNU Core Utilities (coreutils) は、Linux ディストリビューションでよく使われるユーティリティのほとんどが含まれるパッケージです。これらは標準の Unix ユーティリティのポートです。 ls、pwd、echo、sort など 100 を超えるツールが含まれています。このパッケージは非常に一般的であるため、Linux ディストリビューションが正しく「GNU/Linux ディストリビューション」と呼ばれる理由の 1 つになっています。
Linux ディストリビューションに Coreutils がデフォルトでインストールされていない場合は、代わりに基本的なコマンドを実装するための、BusyBox などの軽量の代替手段が用意されている可能性があります。また、シェルはそのユーティリティを「組み込み」として実装します。これは、ユーティリティをディスクからロードするよりもメモリからロードする方が速いためです。
利用可能な coreutils のバージョンは GNU バージョンだけではありません。別のプロジェクトである uutils は、Rust で書かれた独自のバージョンの coreutils をリリースしました。 Rust はメモリ安全で重大なバグのリスクを軽減できるため、システム プログラミングでの人気が高まっています。このバージョンの coreutils は、Microsoft が Windows コマンド ラインと PowerShell に移植したものです。 Linux に慣れているユーザーが、WSL を備えた Linux ディストリビューションの代わりにネイティブの Windows コマンド ラインを使用するときに、新しいコマンドを学習してギアを切り替える必要がなくなるという考えです。
Windows 用 Coretils のインストール
ウイング付きで簡単設置
Coreutils for Windows のインストールは非常に簡単でした。 WinGet を使用してインストールする必要がありました。 WinGet は、Linux コンピューターで使用したことがある apt や pacman などのパッケージ マネージャーに似た Windows 用のパッケージ マネージャーです。
必要なのは 1 つのコマンドだけです。
winget install Microsoft.Coreutils
良かったのは、入力する必要がなかったことです sudo WinGet は、管理者としてインストールするための UAC プロンプトを自動的に開くため、インストールする前に。
Windows 用 Coreutils の使用
PowerShell が気に入らないことを願っています
coreutils をインストールしたら、それが Windows コマンド ライン ワークフローにどの程度適合するかを確認します。
PowerShellでいくつかのコマンドを試してみました。そこで私はすぐに Windows 上の coreutils の欠点に遭遇しました。 Microsoft はすでに、ls や pwd など、多くの一般的な Linux コマンドを PowerShell に移植しています。これらのエイリアスは、coreutils サービスの多くをすでにオーバーライドしています。
coreutils の GitHub ページには、coreutils と PowerShell コマンドとの競合もリストされています。ほとんどのコマンドは、PowerShell コマンドおよびエイリアスと競合します。
これは、この新しいパッケージを使用したい場合は、コマンド ラインに移動する必要があることを意味します。これは、1993 年の Windows NT 3.1 まで遡る、Windows の古いコマンド ライン インターフェイスです。このインターフェイスは、古い MS-DOS インターフェイスに似ているため、よく「DOS ボックス」と呼ばれますが、実際には別のコマンド ラインです。これは Windows ターミナルの第一級市民となっていますが、Windows の主要なコマンド ライン インターフェイスではありません。 PowerShellです。 Microsoft は、コマンド ラインを PowerShell に置き換えて非推奨にすることを発表しましたが、舞台裏のハウスキーピング タスクでコマンド ラインに依存しているプログラムの数を考えると、すぐに廃止されるわけではないようです。
実際にコマンド ラインでこれらのユーティリティを使用するのは、慣れ親しんだものでした。 ls、cat などのユーティリティは、ほぼ期待どおりに動作しました。これらはほとんどが既存のサービスのそのままの移植であるため、これはそれほど驚くべきことではありません。
私が WSL を使い続ける理由
WSL はすでに Windows 向け Coreutils の仕事をはるかにうまく行っています
Microsoft は、このパッケージを私のような人が Windows と Linux のコマンド ラインを簡単に切り替えられるようにすることを意図していましたが、このパッケージの欠点により、Windows から Linux コマンドを実行したい場合は WSL に固執する可能性が高くなります。
主な理由は、使い慣れた Linux コマンドを実行できるターミナル ベースのツールである WSL が Windows にすでに存在していたことです。 WSL を使用すると、Ubuntu、Debian、Fedora、Windows などの一般的な Linux ディストリビューションをインストールできます。すでに Windows と PowerShell のコマンドを相互のコマンド ラインから組み合わせて使用できます。を追加することで、PowerShell から Linux コマンドを実行し、WSL から Windows コマンドを実行できます。 .exe コマンド用。
これは、すでに Linux に精通していて、おそらくすでに WSL がインストールされている私のような人にとって、coreutils パッケージはコマンド ラインにあまり新しい機能を追加しないことを意味します。
もう 1 つの大きな欠点は、パッケージがコマンド ラインに依存していることです。 Microsoft は今後もコマンド ラインを利用できるようにするようですが、同社は企業顧客向けのレガシー テクノロジをサポートすることで知られているため、それは優先事項ではありません。 PowerShell と WSL は、Windows の主要なコマンド ライン インターフェイスのようです。
さらに悪いことに、コマンド ラインはシングルタスクであるため、ジョブ制御やマルチターミナルのような機能は利用できません。私は PowerShell のようなもの、あるいはさらに良いのは、完全なマルチタスク機能を備えたすぐに利用できる Linux シェルのようなものを好みます。
DOS および Windows には Unix に似たユーティリティの伝統があり、その起源は 1980 年代に遡ります。当時、Microsoft は「Xenix」として知られる Unix のバージョンを自社の将来にしようとしていたのです。 Microsoft は、この移行に備えて、DOS サービスを Unix サービスと同じように動作させることさえできました。そうでないことは歴史が証明しているが、Linux と Windows を統合するという同社の取り組みは終わりに近づいているようだ。
Windows 上の Linux にパッチを適用するには WSL を使い続けるつもりです
いくつかのアイデアは、実際に試してみるまでは良さそうに見えます。 Windows のコマンド ラインから Unix のようなユーティリティを実行するというアイデアは気に入りましたが、実行するには PowerShell で実行する必要があります。おそらく将来のバージョンでは、Microsoft は競合を排除し、coreutils をより便利にすることができるでしょう。 Linux と Windows の間のギャップを埋めるために、WSL を引き続き使用していきます。