Edited at

WindowsにBashを導入して人権を回復する


はじめに

事務作業をする上でWindowsが最強のOSであることは誰もが認めるところだろう。(ExcelもWordもAccessも動くのだから!)

でも開発マシンとしては正直ちょっと使いにくいところがあったりする。例えばRubyをインストールする場合、Macなら次のコマンド一発で完了する。

$ brew install ruby

一方Windowsの場合は、


  • 公式サイトから.exeファイルをダウンロード

  • ダウンロードしたインストーラを起動

  • 「次へ」ボタンをポチポチする

という作業が発生する。そして残念ながらこの作業の自動化は難しい。

やりにくいのは環境構築だけじゃない。開発中や運用中においてもWindowsはその使いにくさを発揮する。その主な原因がシェル環境の汚さだ。コマンドプロンプトのクソみたいな構文は使いにくいし、わざわざPowerShellを覚えるくらいならCigwinを入れてシェルスクリプトを書いた方がサーバーとクライアントを統一できるので学習コストが安い。

だがそんな環境も、Windows Subsystem for Linux(旧Bash on Windows)の登場によって一変した。

普段はWindowsを使いながら、必要な時だけUbuntuを使うという選択肢が生まれた。実に素晴らしい。


Windows Subsystem for Linuxの導入方法


Windows Subsystem for Linuxを有効化する


  1. "プログラムのアンインストールまたは変更"の画面を開く



  2. "Windowsの機能の有効化または無効化"を押す



  3. "Windows Subsystem for Linux"にチェックをつける



  4. PCを再起動する



好きなディストリビューションをインストールする


  1. Microsoft Storeを起動する

  2. 好きなディストリビューションを選択する

  3. インストールしたディストリビューションを起動する

2018年9月28日の時点では「Ubuntu」「openSUSE」「SUSE Linux」「Debian」「Kali Linux」が用意されている。今回は代表的なデスクトップLinuxであるUbuntuを選択した。

インストールしたディストリビューションを起動すると、次のような画面になりユーザーとパスワードの設定が求められる。

Installing, this may take a few minutes...

Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

これでWindows Subsystem for Linuxの導入が完了する。


やっておくと便利なこと


Windows側のよく使うフォルダにシンボリックリンクする

上記で導入したLinuxからWindows側のファイルを覗くためには、/mnt以下のパスを参照する必要がある。

だからデスクトップを参照したい場合は"/mnt/c/Users/(user-name)/Desktop/"と打ち込まなければならない。非常に面倒なので、シンボリックリンクしてしまうのがよい。

$ ln -s /mnt/c/Users/Desktop ~/Desktop

ただしWindows側とのやり取りには注意が必要だ。

WindowsとLinuxではファイルシステムが異なる。そのためLinux側からWindows側を見ると全ファイルが「所有:管理者ユーザー、権限777」という状態になっている。ガバガバだ。

そういう訳なので(SSH鍵等の)権限設定が重要なファイルはLinux側に取り込んでおく必要がある。