はじめに
Windows 10標準のLinux仮想環境、Windows Subsystem for Linux(以下WSL)は着実に進歩してますが、デフォルトのままだとまだまだ使い勝手が悪い部分があります。ここでは快適に楽しく使うために個人的に試したことを紹介します。
なお、試したのは Windows 10 Insider Preview Build 17672の環境です。それより古いバージョンだと動作しない場合があります。
コマンドプロンプトからのWSLの起動
WSLを起動する方法はいくつかありますが、以下のようにwsl.exe
コマンドにディストリビューションを指定する方法を覚えておけば今後変更があってもつぶしがききそうです。
> wsl.exe -d distribution
指定可能なディストリビューションの一覧は以下のコマンドで表示されます。
> wslconfig.exe /l
ディストリビューションを省略すると規定のディストリビューションが立ち上がります。これはwslconfig.exe
コマンドで変更できます。
詳しくは下記参照。
ターミナル環境
Windows10標準のターミナルはバージョンによって日本語がうまく表示できなくなったり、コマンドによっては表示が崩れたり、使い勝手も今ひとつなので、Hyperというオープンソースのターミナルソフトをいれました。複数タブに対応し、ひとつのタブを水平または垂直方向に分割可能です。インストールは以下のリンクから。
シェルの選択
Hyperには起動するシェルを複数登録して選択する機能はありません。そこで、シェル選択用のbatファイルを用意し、Hyper のShellとして登録しています。以下のファイルではcmd, Powershell, ubuntu, ubuntu1804, debian という5つのシェルの中から選択するようにしています。
Windows環境とのファイル共有
パスの変換
Windowsの C:\User\you\Documents
というパスはWSLでは/mnt/c/Users/you/Documents
として見えます。この変換はほとんどの場合自動で行われますが、明示的に行いたい場合WSL上にwslpath
というコマンドが用意されてます。
$ wslpath 'C:\Users\you\Documents'
/mnt/c/Users/you/Documents
$ wslpath -w /mnt/c/Users/you/Documents
C:\Users\you\Documents
metadata の設定
Windowsのファイルに対してLinuxのファイル属性を設定したりオーナー変更をすることができるようになりました。設定した内容は他のLinuxディストリビューションでも共有されます。mount時のオプション指定でも可能ですが、/etc/wsl.conf
というファイルを作成して以下のように設定するのが、自動化できて便利です。
[automount]
options = "metadata"
WSLを再起動すると反映されます。
wsl.confの書式については下記を参照。
プロンプト設定
複数のLinuxのディストリビューションやバージョンを使い分けるときに間違いやすいので、プロンプトに表示するようにしています。以下の記述を $HOME/.bashrc に追加しました。
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
OS=$(awk -F'=' '/PRETTY_NAME/ {print $2}' /etc/os-release | sed 's/"//g')
if [ "$color_prompt" = yes ]; then
PS1="\033[01;32m$OS\[\033[00m:\033[01;34m\]\w\[\033[00m\]\$ "
else
PS1="$OS:\w\$ "
fi
環境変数の受け渡し
WindowsからWSLを起動するときと、WSLからWindowsのプロセスを起動するときに環境変数を渡すしくみが用意されました。渡す環境変数のリストを:
区切りで WSLENV
という環境変数に指定します。たとえばWindowsのUSERPROFILE
とUSERNAME
をWSLに渡したい場合は、
> set WSLENV=USERPROFILE:USERNAME
としてからWSLを起動します。
サフィックスをつけることで、それぞれの環境変数のパスの形式を変更することもできます。詳しくは下記ページを参照。
おわりに
あとこれでWSLからGPUにアクセスできるようにしてもらえると、いったん文句ないです。