検索
連載

シェルスクリプトに挑戦しよう(2)Windows 10のbashを試す!“応用力”をつけるためのLinux再入門(22)(1/2 ページ)

Windows 10 Fall Creators Update(バージョン1709)から「Windows Subsystem for Linux(WSL)」の正式版が提供されました。これを有効にすることで「bash」などのシェルが、Windows 10上で利用できるようになります。今回は、Windows 10でbashスクリプトを試す方法を紹介します。

Share
Tweet
LINE
Hatena
「“応用力”をつけるためのLinux再入門」のインデックス

“応用力”をつけるためのLinux再入門

Windows 10でbashを試すには?

 Windows 10 では「Windows Subsystem for Linux(WSL)」()を有効にすることで、Windowsの中にLinux環境を作成して、「bash」などのLinuxシェルを利用できるようになります。

【※】Windows 10 Fall Creators Update(バージョン1709、x64版)で正式に提供開始。



bashのインストールと起動

 Windows 10上でbashを動かすためには、「Windowsシステムツール」→「コントロールパネル」→「プログラム」→「Windows機能の有効化または無効化」で「Windows Subsystem for Linux」にチェックを入れて有効化します(画面1)。

画面1
画面1 「Windows Subsystem for Linux」にチェックを入れて有効化する

 「Windows Subsystem for Linux」にチェックを入れてWindows 10を再起動したら、「Microsoft Store」で“Linux”を検索して、Linuxディストリビューションを選択して購入(無料)します。本連載では「Ubuntu」で動作を確認しています(画面2)。

画面2
画面2 Windows 10を再起動後、「Microsoft Store」からUbuntuをインストールする。「アプリを入手する」からは他のディストリビューションも入手できる

 スタートメニューに「Bash on Ubuntu on Windows」が追加されるので、これをクリックするとbashが起動し、プロンプトが表示されます(画面3)。初回起動時は「Installing, this may take a few minutes」というメッセージが表示され、必要なファイルがインストールされます。

画面3
画面3 スタートメニューに追加された「Bash on Ubuntu on Windows」をクリックすると、bashが起動する(この画面は初回起動時のみ表示)

 「Installation successful!」というメッセージに続き、Linux用のアカウントを作成するためのメッセージが表示されます。Linux環境で使用する「ユーザー名」と「パスワード」を2回入力すると、「ユーザー名@コンピュータ名:カレントディレクトリ $」というプロンプトが表示されます。

Windows環境からのコピー&ペースト

 Windows 10上のbashプロンプト画面では、マウスの右クリックで「クリップボード」の内容をペーストできます。本連載で紹介するコマンド例を右クリック、または[Ctrl]+[C]キーでコピーして、bashを実行している画面に貼り付けると、簡単にコマンドを入力できます。

 また、bashプロンプト画面に表示されている文字も、範囲選択して右クリック、または範囲選択して[Ctrl]+[C]キーでクリップボードにコピーできます。

 プロンプト画面で範囲選択できない場合は、タイトルバー左端のアイコンを右クリック→「プロパティ」→「オプション」タブ→「編集オプション」の「簡易編集モード」がオンになっているかどうかを確認してください。

WSLでテキストエディタを使用するには?

 Windows側からはWSL上のファイルを操作することはできないため、設定ファイルやシェルスクリプトなどを編集するには、WSL上のエディタを使用する必要があります。

 Ubuntuには、本連載の第18回〜第20回で解説している「vi」(本連載18回)コマンドの他、「nano」コマンドがインストールされています。nanoコマンドの使用イメージについては前回(本連載第21回)を参照してください。

Windows環境のファイルをWSLから操作するには?

 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環境)


画面4
画面4 「echo %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.

       | 次のページへ
ページトップに戻る