【連載】

Windows 10で始めるBash

56 完成版となったWindows Subsystem for Linux

56/59

Windows 10 バージョン1607(Anniversary Update)からサポートしたWSL(Windows Subsystem for Linux)。その結果としてWindows 10上でもUbuntuなどのLinuxディストリビューションが動作し、各種コマンドが利用可能になった。本連載ではWSLに関する情報を紹介する。

Windows 10 バージョン1709でWSL正式版へ

2017年9月リリースを予定しているWindows 10 バージョン1709(Fall Creators Update)では、WSLが完成版となる。Microsoftは、2017年7月28日(以下すべて現地時間)に公式ブログで、7月26日にリリースしたWindows 10 Insider Preview ビルド16251から、WSLのベータ版表記が取れたことを報告した。2015年5月に同社が開催した開発者向けカンファレンス「Build 2015」での発表から約2年半の月日を経て、WSLはひとまずの完成を迎えたこととなる。

Windows 10 Insider Preview ビルド16251の「Windowsの機能」

MicrosoftはWSLによる開発環境が実用レベルに達することで、業務利用やLinuxコマンドを用いた利便性を日常の操作に用いることができるとアピールした。既にWSLを利用する上で「開発者モード」の選択は不要になり、LinuxディストリビューションイメージもWindowsストア経由で取得可能になったことから、これまでWindowsとLinuxを併用していた開発者や、日常業務をRPA(Robotic Process Automation)的に自動化したい担当者にも恩恵となる。

改めて述べるまでもなくWSLはLinuxコマンドの実行や、LinuxからWindowsファイルシステムへのアクセスや共有、Windowsプログラムの起動が可能だ。Microsoftは1例として、Windows 10の「C:\Temp」フォルダーに"Hello"の文字列を持つテキストファイル「hello.txt」を作成し、メモ帳で開く操作をワンライナーで実行する「cd /mnt/c/temp/ && echo "Hello" > hello.txt && notepad.exe hello.txt」を紹介。WSLを活用すれば、日常業務を一定レベルまで自動化することができる。

また、Windows 10側からLinuxコマンドを実行することも可能だ。Microsoftは、事前に用意したメッセージをフォーチュンクッキー風にランダム表示するfortuneコマンドの出力結果をパイプで、牛のアスキーアートを描くcowsayコマンドをWindows 10のコマンドプロンプトからBash.exe経由で実行する「bash -c "fortune | cowsay"」を紹介している。ただし、Windowsストア経由でインストールしたLinuxディストリビューションは以前のように、%APPDATA%\AppData\Local\lxssフォルダーに展開されておらず、そのまま実行してもエラーになってしまう。

筆者が確認したところWindowsストア版Ubuntuは、%ProgramFiles%\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_1604.2017.711.0_x64__79rhkp1fndgscフォルダーに展開されるものの、各Linuxコマンドはinstall.tar.gzで固められた状態だ。いずれかの場所にイメージを展開したフォルダーへPATHを通せば先のコマンドも実行可能になるはずだが、このあたりは別の機会を見て精査したい。

Windowsストア版Ubuntuの展開フォルダー

他方でMicrosoftは、WSLがサポートしない機能に対しても改めて明言している。Apacheやnginx、MySQL、MongoDBなどのサーバーアプリケーションは今後もサポートせず、同社は「WSL上のLinuxは(あくまでも)双方向的な操作を提供し、本番運用向けではない」と述べている。また、以前から断言してきたようにX Window SystemのようなGUIアプリケーションもサポート外。個人的に注目しているのが、Windows経由のLinuxファイルシステムに対するアクセスだ。同社は「改善に努めている」と注意書きを沿えており、今後はWindows 10とLinuxの相互的な操作環境が更に進むと思われる。例えばWindows版GnuPGPをインストールし、Linux側に保存した各鍵を使って認証を行うといったことも可能になる可能性は高い。

公式ブログでは、WSLが正式版になったことでサポートに関する説明も行われた。MicrosoftはWSL基盤と関連するツールをサポート対象とし、Linuxディストリビューションはパブリッシャーパートナーに預けるという。例えばUbuntuの場合はCanonical UKおよびUbuntu Project、openSUSEならSUSEおよびopenSUSE projectが担当する。もっともWSLはGitHub上で公開しており、これまでも議論や機能提案が行われてきた。テンプレートガイドラインも用意されているため、誰でもWSLにコミットできる。WSLおよびLinuxディストリビューションが意図どおり動作しない場合は積極的に意見を述べることで、よりよい開発・検証環境を手にすることができるだろう。

阿久津良和(Cactus)

56/59

インデックス

連載目次
第59回 マルチWSLディストリビューションを制御するコマンド"wslconfig.exe"を試す
第58回 "ColorTool"でコンソール配色を自在に変更
第57回 新Windowsコンソールの配色を適用する
第56回 完成版となったWindows Subsystem for Linux
第55回 WSL用openSUSEがWindowsストアに登場
第54回 サーバー上のパッケージ処理をexpectで自動化する
第53回 UbuntuやSUSE Linux Enterprise Serverがパッケージ化
第52回 expectコマンドでクライアントからサーバー処理を自動化
第51回 Windowsコンソール設定を整える
第50回 CPU情報をPowerShell経由で取得する
第49回 DirectXおよびWDDMのバージョンを確認する
第48回 PCの稼働時間をWindows 10から取得する
第47回 Ubuntuのパッケージを管理する
第46回 Windows 10とWSLの最新バージョンをBashで取得する
第45回 米国本家のOfficeの最新バージョン情報もBashで取得する
第44回 インストール済みのOfficeバージョンを取得する
第43回 Office 2016の最新バージョン情報を公式サイトから取得する
第42回 1週間のファイルをISOファイルに書き込むシェルスクリプト
第41回 WSL上のLinuxディストリビューションを変更する
第40回 知ってますか今年の祝日? 国民の祝日自動取得シェルスクリプト
第39回 Bashから当日使ったファイルをWindowsのアプリケーションで開く
第38回 Findで当日使ったファイルを検索する
第37回 HTMLコードの出力シェルスクリプトをRowspan属性に対応させる
第36回 HTMLのTableタグ出力シェルスクリプトをColspanに対応させる
第35回 BashでHTMLのTableタグを楽に
第34回 ファイル名の大/小文字一括変更シェルスクリプトをオプションで制御する
第33回 規則に応じたファイル名の大/小文字化
第32回 拡張子を一括で小文字に統一するスクリプト
第31回 Googleカレンダーから情報を抜き出す
第30回 ドライブを占有するフォルダー容量をExcelで可視化する
第29回 ドライブを占有するフォルダー容量を「R」で可視化する
第28回 ドライブを占有するフォルダー容量をSparkで可視化する
第27回 ドライブを占有する容量をフォルダーごとに簡単確認
第26回 オプションを加え汎用性を高めたレジストリーキー比較スクリプト
第25回 Reg.exeの出力結果をカラフルにして見やすくする
第24回 Reg.exeの出力結果を比較する
第23回 getoptsを活用してイベントソース可視化を大幅に拡張する
第22回 BashからPowerShellを利用する
第21回 Windowsのイベントソースを可視化してオプションで表示を分ける
第20回 Windowsのイベントログを「Cut」で切り出し可視化する
第19回 PDFファイルを画像ファイル化する
第18回 PDFファイルから一括で大量の画像を抽出
第17回 複数PDFファイルから一括テキスト抽出
第16回 文章をMarkdown記法で整える
第15回 ファイル名ではなく内容判断で重複ファイルを削除するには?
第14回 整理整頓!空のフォルダを一括でデスクトップに移送する
第13回 フォルダの中のファイルを一括でPDFにするには
第12回 フォルダーの中のエクセル請求書ファイルを合計する
第11回 BashからExcelブックにアクセスする
第10回 時間軸でデスクトップを片付ける
第9回 散らかったデスクトップを片付ける
第8回 インターネットショートカットファイルを作成する
第7回 取得結果をCSVファイルやテキストファイルに出力する
第6回 Webページの情報をシェルスクリプトで取得する
第5回 case文でスクリプト内容を整理する
第4回 実行先のフォルダーを引数で指定する
第3回 ピクセルサイズに応じて画像ファイルをリサイズする
第2回 他の画像形式をJPEG形式に変更する
第1回 フォルダー内のJPEGファイルを連番でリネームする

もっと見る



人気記事

一覧

イチオシ記事

新着記事