TadaoYamaokaの日記

山岡忠夫 Home で公開しているプログラムの開発ネタを中心に書いていきます。

Bash on Windowsのホームディレクトリ変更

Windows 10 Anniversary Updateが公開されたので、さっそくBash on Windowsを使ってみました。

といっても、今のところMinGW/MSYS2で間に合っているので特段利用したい用途はありませんが。
本当は、Bash on WindowsからGPUが使えたら、TensorFlowを使ってみたいのですが、今のところGPUには対応していないです。

インストール方法とか初期設定とかは検索すれば他の方々が書かれているので、ここではホームディレクトリの変更方法について書いておきます。

Bash on Windowsのホームディレクトリは、デフォルトでは、
C:\Users\USERNAME\AppData\Local\lxss\home\USERNAME
になります。
How to Access Your Ubuntu Bash Files in Windows (and Your Windows System Drive in Bash)

Windows上での作業と共有しようとすると、アクセスしずらい場所です。

普段Windowsで使用しているディレクトリに変更するには、/etc/passwdを編集します。

sudo vi /etc/passwd

を実行して、

username:x:1000:1000:"",,,:/home/username:/bin/bash

の行を

username:x:1000:1000:"",,,:/mnt/h/home:/bin/bash

などに変更すればよいです。

「/mnt/h/home」の部分を任意に編集します。
Windows上のドライブは、「/mnt/<ドライブ名>」でアクセスできます。
この例では、Windows上の「H:\home」です。

ここで、bashを終了する前に、元のホームディレクトリにあった設定ファイルを新しいホームディレクトリにコピーする必要があります。

cd ~
cp -p .* /mnt/h/home/

のようにして、「.bash_logout」、「.bashrc」、「.profile」などをコピーします。

bashをexitで終了させて、再度スタートメニューから「Bash on Ubuntu on Windows」を起動すれば、ホームディレクトリが変更されています。


少し使ってみた感想としては、

  • 起動が速い。Windowsのコマンドと変わらない程度。
  • 日本語が欠けて表示される。標準のコンソールでは使いにくいかも。(まだベータ版なので今後直ることに期待)
  • Ubuntuと同じパッケージが使えるのは今後用途がありそう。

MinGW/MSYS2だと、コマンドの結果をパイプでWindowsのclipコマンドに渡したりとか、startコマンドでWindowsGUIアプリを引数ありで起動したりとかできますが、Bash on WindowsではWindowsのコマンドとの連携はできません。
普段の作業でgrepコマンドとかを使うには、MinGW/MSYS2の方が便利だと思います。
Bash on Windowsを使う場面としては、Linuxと同等の環境で試験したい場合とか、Linuxでしか動かないソフトを使うような場合だと思います。
自分にとっては、それがTensorFlowなのですが、GPUに対応していないのでお試しでしか使えないのが残念です。
今後、GPUにはぜひとも対応してほしいところです。

2017/4/14 追記

Windows 10 Creators Updateで、Windowsのコマンドの実行が可能になりました。

ls | clip.exe

のようにして、コマンドの実行結果をclipコマンドにパイプで渡してクリップボードに格納できます。「.exe」は省略できません。
また、日本語が欠けて表示される問題も解決しています。