Windows 10 Fall Creators Update(バージョン1709)から「Windows Subsystem for Linux(WSL)」の正式版が提供されました。これを有効にすることで「bash」などのシェルが、Windows 10上で利用できるようになります。今回は、Windows 10でbashスクリプトを試す方法を紹介します。
Windows 10 では「Windows Subsystem for Linux(WSL)」(※)を有効にすることで、Windowsの中にLinux環境を作成して、「bash」などのLinuxシェルを利用できるようになります。
【※】Windows 10 Fall Creators Update(バージョン1709、x64版)で正式に提供開始。
Windows 10上でbashを動かすためには、「Windowsシステムツール」→「コントロールパネル」→「プログラム」→「Windows機能の有効化または無効化」で「Windows Subsystem for Linux」にチェックを入れて有効化します(画面1)。
「Windows Subsystem for Linux」にチェックを入れてWindows 10を再起動したら、「Microsoft Store」で“Linux”を検索して、Linuxディストリビューションを選択して購入(無料)します。本連載では「Ubuntu」で動作を確認しています(画面2)。
スタートメニューに「Bash on Ubuntu on Windows」が追加されるので、これをクリックするとbashが起動し、プロンプトが表示されます(画面3)。初回起動時は「Installing, this may take a few minutes」というメッセージが表示され、必要なファイルがインストールされます。
「Installation successful!」というメッセージに続き、Linux用のアカウントを作成するためのメッセージが表示されます。Linux環境で使用する「ユーザー名」と「パスワード」を2回入力すると、「ユーザー名@コンピュータ名:カレントディレクトリ $」というプロンプトが表示されます。
Windows 10上のbashプロンプト画面では、マウスの右クリックで「クリップボード」の内容をペーストできます。本連載で紹介するコマンド例を右クリック、または[Ctrl]+[C]キーでコピーして、bashを実行している画面に貼り付けると、簡単にコマンドを入力できます。
また、bashプロンプト画面に表示されている文字も、範囲選択して右クリック、または範囲選択して[Ctrl]+[C]キーでクリップボードにコピーできます。
プロンプト画面で範囲選択できない場合は、タイトルバー左端のアイコンを右クリック→「プロパティ」→「オプション」タブ→「編集オプション」の「簡易編集モード」がオンになっているかどうかを確認してください。
Windows側からはWSL上のファイルを操作することはできないため、設定ファイルやシェルスクリプトなどを編集するには、WSL上のエディタを使用する必要があります。
Ubuntuには、本連載の第18回〜第20回で解説している「vi」(本連載18回)コマンドの他、「nano」コマンドがインストールされています。nanoコマンドの使用イメージについては前回(本連載第21回)を参照してください。
Windows環境からWSL上のファイルを操作することはできません。しかし、WSLからWindows環境のファイルを読み書きすることは可能です。
Windowsで普段使用しているファイルには「/mnt/ドライブ名/〜」でアクセスできます。ドライブ名は「小文字」でマウントされているので、例えば「CドライブのUsersディレクトリ」(ホームディレクトリ用の場所で、Linux環境の「/home」に相当)であれば「/mnt/c/Users」と指定します。
頻繁にアクセスするディレクトリがある場合は、「シンボリックリンク」を作成しておくとよいでしょう。例えば、WSLのホームディレクトリ下にWindowsアカウント名「study」のデスクトップのシンボリックリンクを作成する場合は、以下のように操作します。
$ cd(ホームディレクトリへ移動) $ ln -s /mnt/c/Users/study/Desktop .(デスクトップへのシンボリックリンクを作成する)
なお、ホームディレクトリのパスなどは環境変数に保存されているので、Windowsのコマンドプロンプトで「set」コマンドを実行することで確認できます。
コマンドプロンプトは、スタートメニューの「Windowsシステムツール」→「コマンドプロンプト」を選択するか、[Windows]+[R]キーで「ファイル名を指定して実行」ダイアログボックスを開いて「cmd」と入力することで起動できます。この方法でコマンドプロンプトの画面を開いた場合、自分自身のホームディレクトリがカレントディレクトリとなり(※)、「C:\Users\study>」のようなプロンプトが表示されています。
【※】Windowsのコマンドプロンプトでも「cd」コマンドでカレントディレクトリを変更できますが、Linux環境のcdコマンドとは動作が異なります。Windowsでは「cd」のみを実行した場合は、ホームディレクトリへの移動ではなく、「カレントディレクトリの表示」という動作になります。なお、Windowsの場合カレントディレクトリはドライブごとに保持されており「cd d:\data」でDドライブのカレントディレクトリを「\data」に変更、「cd d:」でDドライブのカレントディレクトリを表示します。
環境変数は「set」コマンドで一覧表示、個々の値は「echo %変数名%」コマンドで参照できます。自分自身のホームディレクトリの場所は「echo %USERPROFILE%」コマンドで確認できます(画面4)。
set
(環境変数を一覧表示:Windows環境)
echo %USERPROFILE%
(環境変数「USERPROFILE」を表示:Windows環境)
ちなみに、WSLからWindowsコマンドを実行することも可能ですが、この場合もWSL上にあるファイルを参照することはできません。
例えば、「メモ帳(notepad.exe)」は「/mnt/c/Windows/System32/notepad.exe &」にあり、Windowsのコマンドプロンプトと同じパスが通っているので「notepad.exe &」で起動できます(※)。
【※】Windowsのコマンドプロンプトでは「.exe」や「.bat」「.cmd」などの拡張子は省略できるので「notepad」のみで実行できますが、WSLでは拡張子を省略できません。
notepad.exe ファイル名 &
(「メモ帳」で指定したファイルを開く。「/mnt/」下のファイルは開けるが、WSL上、例えばホームディレクトリなどのファイルは参照できない)
最後の「&」は「バックグラウンドで実行する」という意味です。このように実行すると、コマンドの終了を待たずに、次のコマンドが入力できるようになります。「&」を付けずに実行すると、メモ帳を終了するまでは次のコマンドを入力できません(※)。
【※】bashの画面では[Ctrl]+[C]キーでbashに制御は戻りますが、Windowsアプリケーションの場合はbashからは終了できません。「&」に興味がある方は、本連載第15回を参照してください(第13回、第14回を踏まえた内容となっています。実行例で紹介しているコマンドは全てWSL上のUbuntuでも実行できますが、表示される内容は異なります。また「kill」コマンドや「killall」コマンドでWindowsアプリケーションを終了させることはできません)。
なお、WSLの画面を開いていても、タスクバーやスタートメニューは普段通り使用できるので、このような方法でWindowsアプリケーションを起動する必要はないでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.