連載
» 2016年08月08日 05時00分 UPDATE

Tech TIPS:Windows 10のLinux/Ubuntu互換環境でbashを使う

WindowsでLinux/Ubuntuのプログラムが動く!? まだβ版ながらWindows 10標準装備となったbashシェルのセットアップ手順と注意点、不具合について解説する。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 10バージョン1607以降(64bit版のみ)



解説

 Windows 10のバージョン1607(ビルド14393、Anniversary Update)では、Ubuntu互換の実行環境「Windows Subsystem for Linux(WSL)」と「bash(Bourne Again Shell)」が新たに導入された(64bit版でのみ利用可能)。これを利用すると、LinuxのUbuntuディストリビューションで用意されているプログラム(Ubuntu向けのバイナリパッケージやソースコードなど)をそのまま、WSL上で実行できるようになる。

 今までも、Windows上でUNIX/Linuxのプログラムを実行するツールや互換実行環境(SUAやCygwin、MSYSなど)があった(TIPS「【総まとめ】Windowsコマンドプロンプトの入門から使いこなしまでの記事」参照)。だが、このWSLは、Ubuntu向けに配布されているパッケージをそのままダウンロードしてインストールおよび実行できる点が異なっている。SUAやCygwin向けに特別に作られたものを用意しなくても、現在広く普及しているUbuntu向けのプログラムがそのまま使えるのが利点である(ただしサーバプログラムなどはサポートされない)。

 本TIPSではWindows 10バージョン1607以降を前提として、WSLとその上で動作するbashコマンドをインストールする方法を紹介する。

 ところでWindows 10のバージョン1607で利用できるWSL機能はまだβ版である。Ubuntuで動作するコマンドなどが全て利用できるわけではないし、文字表示などに一部不具合なども見受けられる(特に日本語文字表示にはまだ問題が多い)。本格的な利用のためには、今後の開発を待つ必要がある。

操作方法

●手順1――WSL機能を追加する

 WSLを利用するには、管理者権限のあるアカウントでサインインし、[スタート]ボタンを右クリックするか、[Windows]+[X]キーでクイックアクセスメニューを出して、一番上にある[プログラムと機能]を起動する。

WSL機能の追加(1) WSL機能の追加(1)
[スタート]メニューを右クリックしてクイックアクセスメニューを表示させ、「プログラムと機能」を選択する。
  (1)これを起動する。

 [プログラムと機能]画面が表示されたら、左側のメニューから[Windowsの機能の有効化または無効化]を選択する。

WSL機能の追加(2) WSL機能の追加(2)
コントロールパネルでWSL機能を追加する。
  (1)これをクリックする。

 機能一覧の画面が表示されたら、[Windows Subsystem for Linux (Beta)]のチェックボックスをオンにして、機能を追加する。再起動が求められるので、指示に従って一度システムを再起動する。

WSL機能の追加(3) WSL機能の追加(3)
WSLを選択して有効にする。
  (1)これをオンにする。「(Beta)」という表記から分かるように、このバージョンではWSLはまだβ版という扱いになっている。

●手順2――開発者モードを有効にする

 再起動後、また管理者権限のあるアカウントでサインインし、[スタート]メニューから[設定]アプリを起動する。そして以下の画面のように、[更新とセキュリティ]−[開発者向け]−[開発者向け機能を使う]で[開発者モード]を選択し、画面を閉じる。

開発者モードの有効化 開発者モードの有効化
[設定]アプリで[開発者向け]機能を有効にする。これはプログラムを開発・デバッグしたりする場合に利用するメニュー。
  (1)これを選択する。
  (2)デフォルトはこれが選択されている。
  (3)これを選択すること。

 [開発者モード]を選択すると、次のような警告画面が表示されるので、内容を確認して[はい]をクリックする

開発者モードをオンする場合の警告 開発者モードをオンする場合の警告
開発者モードをオンにすると、通常は利用できないさまざまな権限が有効になる。だがその分、リスクも高くなる。
  (1)リスクの説明。次のコラム「sshポートのオープンに注意」も、そのリスクの1つ。
  (2)内容を確認してから、これをクリックする。

コラム「ssh ポートのオープンに注意」

 執筆時点では、「開発者モード」を有効にすると、sshのポート(TCPの22番ポート)がオープンされ、外部からsshでログインできるようになるので(外部から接続するとコマンドプロンプトcmd.exeが起動する)、注意すべきだ。

 不用意に外部から接続されたくなければ、ファイアウォールで「SSH Server Proxy Service」のポートをローカルネットワーク以外には許可しないように制限したり、(SSH以外にも、既に多数のポート/サービスが外部に向けてオープンされているので)全てのユーザーアカウントとパスワードを容易に推測されないものに変更したりすること。


●手順3――bashコマンドを起動して環境をセットアップする

 以上の操作で準備は完了したので、次はWSLの実行環境を用意する。この手順3の操作は、WSLやbashを利用したいユーザーごとに最初に1回行う必要がある。管理者権限がない、一般のユーザーアカウントであってもWSLを利用できる。

 まずコマンドプロンプトを起動し、「bash」コマンドを実行する。するとWSLをインストールするかどうかを確認するメッセージが表示されるので、「y」を入力して先へ進む。

bashのインストール(1) bashのインストール(1)
まずコマンドプロントを起動し、「bash」コマンドを起動する。
  (1)「bash」と入力して、bash.exeコマンドを起動する。
  (2)「y」と入力すること。

 インストールを許可すると、WSLで利用する環境イメージ(Ubuntuのファイルシステムやデフォルトのツールなど)がローカルのユーザーフォルダの中に展開される。ユーザーごとに、約600Mbytes弱のファイル領域が必要となる(これは本記事執筆時点でのサイズ。今後増加すると予想される)。

 その後、Ubuntu環境で利用するユーザー名とパスワードの入力が求められるので、適当なものを指定する。このユーザー名はWindowsのユーザー名とは別に管理されているので(WSLの中でのみ有効なユーザー名となる)、異なる名前にしてもよいし、同じ名前にしてもよい(ただし日本語のユーザー名は避けた方がよいだろう)。

bashのインストール(2) bashのインストール(2)
ユーザー名とパスワードを入力する。ただし現在のバージョンでは、この部分の画面表示が一部崩れていることがあるが、気にせず入力すればよい。
  (1)まずユーザー名を入力して[Enter]キーを押す。このユーザー名は、他のユーザーアカウントのWSL環境とは独立して管理される。
  (2)WSL環境で利用するパスワードを入力して[Enter]キーを押す。
  (3)パスワードの確認用再入力。
  (4)セットアップ完了。「/mnt/c/Users/〜」はカレントフォルダの場所。

 以上の入力が済むと最後の処理が行われ、WSL環境がセットアップされる。

●手順4――bashシェルの起動

 以上でWSLとbashのインストールは完了である。WSLを使いたい場合は、bashを起動して、コマンドを入力・実行すればよい。

 それには、[スタート]メニューに追加された[Bash on Ubuntu on Windows]という項目を選択してbashを起動する。よく使うなら、このメニューを右クリックして、スタート画面やタスクバーにピン留めしておけばよい。

bashの起動 bashの起動
WSLをインストールするとbashの起動用メニューが登録されるので、これを使ってbashを起動する。
  (1)WSL/bashを使うにはこれを選択する。よく使うなら、この項目を右クリックして、スタート画面やタスクバーにピン留めしておくとよい。

 UbuntuやLinuxについてはここでは詳しく述べないが、コマンドの説明はmanコマンドで調べたり、不足しているパッケージはapt-getコマンドで取得したりすればよい。以下の記事なども参照のこと。

 またWindows 10側のファイルシステムは「/mnt/c/」や「/mnt/d/」などで参照できる。

bashの使用例 bashの使用例
このウィンドウの中は完全にLinux/Ubuntuの世界。Windows側のコマンド(.exeファイルなど)を起動することもできない。
  (1)現在のフォルダ。
  (2)lsコマンドでファイルの一覧を調べてみる。lsコマンドについては別稿の「Windowsの『dir』はLinuxの『ls』コマンド――ファイル一覧表示」も参照のこと。
  (3)ファイルの一覧。これらはWindows OSのファイルやフォルダ。
  (4)ユーザーのホームへ移動する。
  (5)lsを実行してみるが、WSLをインストールした直後の状態では何も表示されない(「.」で始まる名前のファイルばかりだから)。
  (6)全ファイルを表示させてみる。
  (7)Windows側のファイルを確認してみる。Windows側のドライブは「/mnt/〜」にマップされている。
  (8)WindowsのC:とD:ドライブ。

●まだβ版のWSLには不具合もある

 執筆時点では、このWSLはまだβ版であり、例えば日本語文字列が正しく表示されないことがある。

 こんな場合は、画面を再描画させたり(ツールにもよるが、[Ctrl]+[L]や[Ctrl]+[R]で再描画できることが多い)、bashのウィンドウを一度最小化してから元の状態に戻したり、スクロールさせたりする、などの操作で正しく表示されることがある。

 また、「ロケール」(言語や地域の設定)をデフォルトの日本語モード(ja_JP.UTF-8)から英語モードにしておくと(bash上で「LANG=en_US.UTF-8」や「LANG=C.UTF-8」などを実行する)、表示の乱れが少ないようだ。WSLはまだβ版であることを理解して利用していただきたい。

日本語表示が乱れている例 日本語表示が乱れている例
このWindows 10 バージョン1607に含まれるWSLでは、まだ作りが不完全なのか、日本語がうまく表示されないことがある。そんな場合は再描画(リドロー)したり、英語モードに切り替えたりすると改善されるようだ。
  (1)適当なコマンドを実行させてみる。
  (2)本当はこのあたりにも文字があるはずだが、なぜか表示されていない。
  (3)localeコマンドでロケールを確認してみる。デフォルトでは「ja_JP.UTF-8」となっている。
  (4)ロケールを英語に変更してみる。
  (5)英語なら欠けることなく、正しく表示されている。UNIXやLinuxサーバは英語モードのまま使うことも少なくないので、(慣れるために)当面は英語モードで利用するという手もある。
  (6)こちらのbashウィンドウでも同じコマンドを実行しているが、一度bashウィンドウを最小化してから元に戻してみたところ、正しく表示された。このようにウィンドウの再描画やリサイズ、スクロールなどで表示が直ることも多い。

■関連記事


「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。