UNIX風環境をWindows OS上で使用してきた時代

黎明期からコンピューターを使ってきた方にとって、キーボードからコマンド名を入力して実行するスタイルは、ごく自然なものでした。GUI(グラフィカルユーザーインターフェース)が主流になってからも、コマンドラインによる操作は依然と残され、我々が使用するWindows 7にも、コマンドプロンプトやWindows PowerShellといったCUI(キャラクターユーザーインターフェース)が用意されていることからも、その重要性を理解できることでしょう。

そもそもコマンドプロンプトで実現するコマンドラインインタープリターは、Windowsが主流になる前のOSであるMS-DOSを基礎にしており、そのMS-DOSもQDOSという16ビットOSを元にしています。しかし、CUIを採用したOSの源流は、1970年代から大学や研究所などに普及したUNIXにあり、その使用スタイルはLinuxやMac OS XのベースとなったBSD UNIXに受け継がれていきました。

このような背景のなか、Windows OS上でもUNIX風の使用環境を欲するユーザーは多く、GNU系コマンドをWin32APIに移植したGnuWinUnxUtils、フリーソフトウェアのサポートを事業とするCygnus Solutionsが中心となって移植したCygwinが登場し、Windows 9xの時代からUNIX系のコマンドライン操作を可能にしています(図01)。

図01 Windows OS上でUNIX系ソフトウェアを起動可能にするCygwin

興味深いのが、Microsoft謹製のUNIX環境。Windows OSの主流がまだWindows 98で、ビジネスユーザーがWindows NT 4.0 Workstationを使用していた時代、UNIX系のコマンドやサービスを実現する「Windows NT Services for UNIX Add-on Pack」という製品を販売しています。gcc(GNU C Compiler)やヘッダーファイル、ライブラリはもちろん、NFS環境やUNIX系コマンドを数多く用意し、公式サポートを必要なユーザーには有益なパッケージとなりました。

その後もバージョンアップを重ねてきましたが、2004年から無償化したWindows Services for UNIXに受け継がれ、Windows Vista以降は、Subsystem for UNIX-based ApplicationsとしてWindows OSに標準搭載されています(図02~03)。

図02 Windows XP上で動作するWindows Services for UNIX。用意されているシェルはCシェルとKornシェルです

図03 Windows 7には、Subsystem for UNIX-based Applicationsが標準搭載されているため、簡単にUNIX環境の一部を実現できます

しかし、Windows NT Services for UNIX Add-on PackやWindows Services for UNIXはX Window Systemクライアントのみ提供されており、単体でX環境を使用することができません。OpenNTをベースとしたInterixサブシステムで実装されたことから、BashなどLinuxでは一般的に使用されているコマンドが用意されていなかったこともあり、積極的に活用する方は多くありませんでした。

多くのユーザーは前述のCygwinを使用するか、同時期に流行りだしたLinuxを導入したコンピューターを用意し、Windows OS側から端末エミュレーターで接続した方が簡単かつ便利だったのです。本題から逸れますが、Windows OS上で動作するLinuxカーネルを用いた「coLinux(Cooperative Linux)」も流行りました。CygwinやWindows Services for UNIXのようにサブシステムを介さず、高速で動作するため、バックグラウンドでサービスを走らせるユーザーには便利な環境でした。