Bash on Windows でインフラ的コマンドを試してみる
ネットアシストのykinjoです。Windows 10 のリリースからおよそ1年、2016年8月3日(日本時間)にAnniversary Updateが公開されました。今回はそのアップデートに含まれ、Bashと各種Linuxコマンドが利用可能になる「Bash on Windows」をインストールから各種コマンド実行まで試してみたいと思います。
注意事項
- この記事を参考に操作を行い、不具合やセキュリティ上の問題が生じた場合も、自己責任でお願い致します。
- 後述しますが「Bash on Windows」機能は2016年8月現在はまだBeta版です。
インストール
まずはWindows 10にAnniversary Updateを適用します。
設定画面のWindows Updateで「更新プログラムのチェック」を押しても反応がない場合は、詳細情報からダウンロードする事が出来ます。
Anniversary Update を入手するをクリックし、インストーラーをダウンロードし実行することで更新が可能です。アップデート完了までの時間は以下のようになりました。この時間はネットワーク環境やマシンスペックなど様々な要因で変化しますのであくまで一例となります。
- OSインストールドライブは128GBのSSD
- CPUはCore i5-4210M 2.6GHz
- ネットワークはIEEE802.11n (2.4GHz)でのリンク
- インストーラーを実行しアップデートのDL開始~終了: 23分
- インストール処理(既存Windowsは起動したまま): 15分
- インストール処理(操作不可):27分
- ログイン~「準備をしています」表示~デスクトップ表示:1分
計:66分(そのうち操作不可時間が28分)
「Bash on Windows」自体の導入については、既にWeb上にもいくつか記事が有るのでそちらに詳細は譲りますが、大まかにまとめると以下になります。
- 設定画面「開発者向け」から「開発者モード」を有効化
- 「プログラムと機能」の「Windowsの機能の有効化または無効化」から「Windows Subsystem for Linux (Beta)」を有効化
名前にも入っている通りこの機能はまだBeta版との事です。不具合もあるかと思いますので留意のうえで有効化しましょう。
Bash on Windowsを使ってみる
コマンドプロンプトを起動し、bashコマンドを実行することでbashが起動します。
初回起動時は新たにbashを利用する際のログインユーザー、パスワードの設定が必要となるようです。適宜設定してください。
ではいくつかのコマンドを試してみたいと思います。
top , ps
いずれもWindows 側のプロセスは表示されないようです。Windowsとは分離された環境である事が分かります。
free
概ねWindows側と同様の空きメモリが表示されています。このコマンドプロンプト以外は目立ってアプリを起動していない状態ですので、メモリ消費量が大きいアプリをWindows側、Bash側で起動してみると値の差異が出てくるかもしれません。
df
df を実行してもWindows側のパーティションが表示されるわけではありません。WindowsのC、Dなどのドライブは /mnt/ 配下にマウントされた形となります。
vim , emacs , nano
vim はそのまま起動します。emacs は apt-get での追加インストールが必要なようです。Ubuntuベースらしく nano もデフォルトの状態で起動する事が出来ます。現在のBash on Windowsでは日本語の入力ができない為、いずれも使い方は限定されるでしょう。
dig
実行可能ですが、そのままでは「WARNING: EDNS query returned status FORMERR – retry with ‘+noedns’」となります。追加設定を行えば利用できるかもしれません。
whois
apt-get コマンドでのインストールが必要です。インストール後は正常な値が取得可能でした。1枚目の apt-get 実効時の画像からも分かるように日本語の表示には若干の乱れが感じられます。
ssh
外部サーバへのSSH接続が問題なく行えることを確認しました。
Bash on Windowsは使えるのか
使えるか使えないかで言えば使える状態です。開発用のツールにWindows版が無い、有っても導入の敷居が高いような状況ではCygwinやMinGW、仮想マシン利用などと同様に(※1)実行環境として試す価値はあるかと思います。ただし、日本語周りは表示・入力共に問題ないとは言い難い状態です。これが解決すれば awk や sed、各種スクリプト言語による強力な文字列処理など様々な場面で活用できるものになるでしょう。今後のブラッシュアップに期待したいですね。
※1 Pro版以上のHyper-VをサポートするWindows 10では、先日正式版になった「Docker for Windows」を試すのもありでしょう。