俺の Bash on Windows10 環境


# はじめに
Windows10 Anniversary Update がリリースされてはや2週間。その中の目玉機能とも言えるBash on Ubuntu on Windows (略してBash on Windows)、みなさんはもう試したでしょうか。僕は食いつきました(笑)。
なんとかいっぱいググッてとりあえず今のお気に入りの環境を作ることができたので、皆さんに「俺の環境」としてご紹介します。


# 用意するもの
- Windows 10 Anniversary Update
- Xming (X11 サーバーとして使うのに必要)

# 俺の環境の特徴
- X11 を利用したアプリが使える (例えば gnuplot が手軽に使えて便利)
- X11 アプリのターミナルエミュレーターを利用しているため、~~Windows のアホみたいなレンダリングに比べれば~~フォントが綺麗(だいじ)
- Windows なのにも関わらず、様々なプログラミング環境を簡単に整えられる(Ubuntu の特徴)
- 日本語入力が簡単にできる
- Windows シェル? が起動し、その中で Xming を利用し Lxterminal 中で Zsh を起動

さぁ、行きましょう。

# 手順
## 1. Linux Subsystem (Beta) の導入
これについては色々なサイトで説明がありますので、そちらを参照してください。

## 2. 必要パッケージのインストール
サブシステム上で自分のほしいパッケージを入れてください。

```bash
$ sudo apt-get install build-essential sl cowsay figlet vim-gtk gnuplot gnuplot-x11 zsh git tig w3m w3m-img fonts-ipafont-gothic supertux
```
とか。

## 3. ターミナルエミュレーターのインストール
今回は `lxterminal` を入れます。僕の場合は一度 LXDE を入れて削除した後にたまたま残っていたものなのでどうかは分かりませんが、おそらくガッツリは LXDE に依存しないパッケージだと思います。すなわち、`$ sudo apt-get install lxterminal` でそれほど多くの他のパッケージを引き連れないと思います。

>Q. ターミナルは ConEmu とかでええやん？？
A. そうなのですが、僕の検証の範囲内では不具合が見られました。たまに矢印キーが利かない、たまに日本語が入力できない、等です。以下の4.をご覧ください。この方法では常に不具合なく使えます。

## 4. 日本語入力を出来るようにする  
デフォルトでは `lxterminal` では日本語入力ができません。そこで、FEP を入れたいと思います。

```bash
$ sudo apt-get install uim-fep uim-anthy
```
でインストールです。

続いて、FEP の設定をします。テキストエディタで `~/.uim` ファイルを編集し、

```lisp:~/.uim
(define default-im-name 'anthy)
(define-key generic-on-key? '("<Control> " "`"))
(define-key generic-off-key? '("<Control> " "`"))
```

を記述してください。これにより、FEP が Anthy で動き、かつ、`C-<Space>` か <code>C-`</code> で日本語<===>直接入力の切り替えができるようになります。また、この FEP を利用するために、

```bash:~/.bashrc
export XMODIFIERS=@im=uim
exec uim-fep -e bash
```

を記述しておいてください。

## 5. Xming の導入
Xming、 Xming-fonts の両方をインストールしてください。ダウンロード先(OSDN) のリンクは[こちら](https://osdn.jp/projects/sfnet_xming/releases/)。

## 6. X11 を使うための設定
`~/.bashrc` に環境変数として

```bash:~/.bashrc
export DISPLAY=localhost:0.0
```
を追加してください。

さらに、Xming 起動用のショートカットを作成します。

```
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -xkbmodel jp106 -xkblayout jp -dpi 100
```

などのものを作成するといいでしょう。Bash を利用する前に実行して常駐させておいてください。

ターミナルを再起動して `sudo apt-get install x11-apps` し、`xeyes` で目玉が出ていたら導入は完了しています。

なお、上の `lxterminal` は、`$ lxterminal` で起動します。

## 7. デフォルトのシェルを bash から zsh に変更する  
別にやらなくてもいいのですが、愛用のシェルが Zsh なもんで。

よく
> bash を `# mv /bin/bash /bin/bash.old` として退避させ、zsh を `# ln -s /usr/bin/zsh /bin/bash` としてシンボリックリンクを作成してください。

とかあるんですが、僕は元の `/bin` ディレクトリを弄りたくなかったので、別のアプローチを用います。

まず、zsh をインストールします。その後、以下のコードを `~/.bashrc` に書くと、自動的に zsh が起動するようになります。なお、上で `exec` で始まる文を記述した場合は以下のように書き換えてください。

```bash:~/.bashrc
if [ -t 1 ]; then
    exec uim-fep -e zsh
fi
```

さらに、起動時に lxterminal を起動させ、その中で zsh + FEP を起動させたい場合は、以下のようにします。

```bash:~/.bashrc
if [ -t 1 ]; then
    exec lxterminal -e uim-fep -e zsh
fi
```

僕の `.bashrc` は上のようになりました。

# 完成!
一応、これで全てできました。導入が成功していれば、以下のようになっているはずです。
![lxterm.png](https://qiita-image-store.s3.amazonaws.com/0/74946/d008b459-3280-bce7-075b-a5a3db1c56f3.png)

![gp.png](https://qiita-image-store.s3.amazonaws.com/0/74946/370ab796-5bc8-189b-5695-c7d7b6463ad2.png)

お疲れ様でした。何か気になる点があればどしどしコメント欄へどうぞ。素人なりにお答えします。

# 追記
(2016/09/13)
起動時のカレントディレクトリが Windows のホームフォルダになってて嫌だ！という方は、上の `if` 文の前の行に、`cd ~` を追加してください。

# 参考
[uim-fep - Qiita](http://qiita.com/tukiyo3/items/376e3a2895a71ff9bfc7)
[Bash on Ubuntu on Windows + XmingによるGUI - Qiita](http://qiita.com/makky0620/items/e31edc90f22340d791ff)
[Xサーバ Xming でフォントが小さい場合](http://vogel.at.webry.info/201407/article_9.html)