ssig33.com

Bash On Windows で生活する

結論

特段事情がない限りは Linux インストールして使うか Mac 買うかしたほうがいいと思う

以下こまごました話

Bash On Windows/Windows Subsystem for Linux でやっていきたいという風になったときに知っておくといいことのまとめです。

16.04 にはアップグレードできる、しかしやめておいたほうがいい。

こちらの記事の内容に従えばアップグレードすることは可能です。しかしやめておいたほうがよいです。

という不具合が発生してしまいます。特に後者は致命的。おとなしく 14.04 で我慢しましょう。

まともにターミナルを使いたいときは SSH するしかない

ConEmu だとか Cmder だとかいろいろと Windows 向けのターミナルエミュレータはあって、結構まともに動くものなのですが、 Bash On Windows との相性はあまりよいとは言えません。また標準 cmd.exe については言わずもがな。 256 色を使えないのも痛い。

また結構問題なのが bash.exe から直接起動したときはデフォルトシェルの設定が無視されてしまうという点です。

上記二点の問題は sshd を立てて ssh 経由で起動してしまえば解決します。

Bash On Windows で sshd を起動するには、 /etc/ssh/sshd_config を

UsePrivilegeSeparation no

と修正すれば大丈夫です。こうすればあとは sudo /usr/sbin/sshd -D とかで普通に起動します。

デーモンの自動起動とかはできない

Bash On Windows ではデーモンの自動起動とかはできませんし、 Bash On Windows のプロセスが全部死ぬと内部の Linux プロセスも全部死ぬという問題があります。なので /boot.sh とかなんとか適当なシェルスクリプトを作ってそこに

#!/bin/sh
sudo /etc/init.d/redis-server start
sudo /etc/init.d/mysql-server start
sudo /etc/init.d/mongodb start
sudo /usr/sbin/sshd -D 

とか適当に起動したいデーモンを書いておいて、

bash.exe -c "sh /boot.sh"

みたいなバッチファイルを作ってどこかに置いておいて起動用に使えばよいでしょう。スタートアップに入れてもいいかもしれない。コマンドプロンプトのウィンドウがうざいみたい場合はTaskTrayPlusとかで隠せる。

X は意外とちゃんと動く

Xming という Windows 用 X サーバーがあり、ここ最近あんまメンテされていないように見えますが Windows 10 でもちゃんと動きます。

$ DISPLAY=localhost:0.0 gvim

とかすれば普通に GVim が使えます。 クリップボードは共有できますが、 IME は当然共有されません。 Vim とか Emacs とかみたいにエディタ内で日本語入力ができるエディタならかなり快適です。

様子としては以下のような感じ

様子

Windows 側のもと Linux 側のものが混ざっています。

Docker

docker-engine 自体はインストールできるので、 Remote API 経由で使うことはできます。ただ Linux のディレクトリは Windows 側から見えるので、 Docker だけは Docker for Windows を使うのがいいかもしれない。

終わりに

これはしょせんよくできた Cygwin みたいな感じの仕組みなのでパフォーマンスについては、かなり悪いです。 git grep とかしてみるとかなりひっかかる感じがあると思います。

ぼくはゲーム用マシンでも開発できるようにしたいみたいな感じで環境構築してみましたが、これだけでやっていけるかというと、まあやりたいことはたいてい全部できるけど、、、みたいな感じです。

特別理由がないかぎりはふつうに PC に Linux いれるか Mac 買ってくるかしたらいいんじゃないかな、、、という感じです。 Cygwin でいろいろ我慢していろいろやっていた人たちはただちに引っ越したほうがいいですね。

back to index of texts


Site Search