Windows10 の "Bash on Ubuntu on Windows" で困ったこと

インストール記事はすでに沢山あるので、使用中に困ったことと、インストール直後のカスタマイズに焦点を絞って記事にする。

## インストール手順
Qiita上の下記記事が丁寧でわかりやすかった。
http://qiita.com/Aruneko/items/c79810b0b015bebf30bb

要は次の3ステップを実行すれば良い。
1. 開発者モードを有効化する
2. Windows Subsystem for Linux(Beta) を有効化して再起動する
3. コマンドプロンプトを開いて bash と打ち込み、ユーザ名とパスワードを入力する

## 困ったこと

### 日本語文字化け
上記の bash の打ち込みの後に、ダウンロードとファイル展開が始まるのだが、その時点で画面の日本語が激しく文字化けした。途方にくれて管理者コマンドプロンプトから ``` lxrun /uninstall /full ``` で一旦削除し、``` lxrun /install ``` で再インストールしたが、また同じ現象が発生した。
![console-ng.PNG](https://qiita-image-store.s3.amazonaws.com/0/130677/ada29640-7c10-9058-d43f-9295b7991b7f.png)

原因は、bashを実行するコンソールウィンドウのプロパティに **ラスターフォント** が設定されているためだった。
![console-prop.PNG](https://qiita-image-store.s3.amazonaws.com/0/130677/f834c5af-afde-d336-f554-5abff3ef2a5e.png)

コンソールウィンドウの左肩にあるアイコンを右クリックし、開いたメニューからプロパティを選択してフォント設定をラスタフォントから **MS ゴシック** に変更したところ、日本語の文字化けが修復した。
![console-ok.PNG](https://qiita-image-store.s3.amazonaws.com/0/130677/603f4c30-5ab6-93f4-c410-10dbf1dddc16.png)

インストール完了後に、スタートボタンから Bash on Ubuntu on Windows で起動した bash用コンソールも同じように、フォント設定を直す必要があった。

フォント以外にも「オプション」タブの「編集オプション」グループにある「簡易編集モード」をチェックオンし、コンソール画面内のテキストをコピー＆ペーストできるようにしておくと便利である。

### ~~sudoで警告が出る~~
sudo の度に、```sudo: ホスト xxx の名前が解決できません``` と警告が出るので、hostsに記入する。

```
$ sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'
```
#### (追記)
2017年4月の Windows10 Creators Update 後に再インストールすることで、本件は解消した。

### .profile が実行されない
インストールするとホームフォルダに .profile が置かれる。
.bash_profile や .bash_login は存在していないので、bash起動時に .profile が実行されるはずだが実行されない。その理由はスタートメニューに登録されたBashショートカットに --login オプションが指定されていないから。修正方法は ```メニューのBashアイコン右クリック＞その他＞ファイルの場所を開く＞ショートカットファイルを右クリック＞プロパティ``` でショートカットのリンク先欄に ```--login``` を追記する。
![bow-shortcut.PNG](https://qiita-image-store.s3.amazonaws.com/0/130677/ee825303-d72c-bf9f-b86b-63d3c682619a.png)

PowerShellやコマンドプロンプトからbash起動する場合も ```bash --login``` とタイプインしないと .profile は実行されない。確かにログインはしてないから正しい気はする。だが不便だ。--login 指定付きのエイリアスやバッチファイルを作って対応する。

### bashコンソールの色が暗い
コンソールに設定されている色が全体に暗くて視認性が悪い。
vimの構文カラー表示が猛烈に見辛いので、~/.vimrc に ``` colorscheme elflord ``` を設定して配色を変更したが、vim 以外にも ls や grep や git diff のカラー表示が暗すぎるので、コンソールウィンドウのプロパティの「画面の色」タブにて16色のRGB設定を調整した。

| 調整前 | 調整後 |
|-------|--------|
| ![console-color.PNG](https://qiita-image-store.s3.amazonaws.com/0/130677/87cd5cb7-25a0-8e1c-ed89-d62fbdb57ce1.png) | ![console-color-tuned.PNG](https://qiita-image-store.s3.amazonaws.com/0/130677/8709ac07-4139-1134-0da7-baf0fb7f5237.png)

* 調整内容

| 番号 | 色 | 元のRGB | 調整後のRGB
|----|------|---------|------------
|  0 | 黒   | 0,0,0   | 0,32,32
|  1 | 暗青 | 0,0,128 | 0,80,200
|  2 | 暗緑 | 0,128,0 | 0,192,0
|  3 | 暗水 | 0,128,128 |0,192,192
|  4 | 暗赤 | 128,0,0 | 200,40,40
|  5 | 暗紫 | 128,0,128 | 192,0,192
|  6 | 暗黄 | 128,128,0 | 192,192,0
|  7 | 暗白 | 192,192,192 | 無変更
|  8 | 灰 | 128,128,128 | 無変更
|  9 | 青 | 0,0,255 | 無変更
| 10 | 緑 | 0,255,0 | 無変更
| 11 | 水 | 0,255,255 | 無変更
| 12 | 赤 | 255,0,0 | 無変更
| 13 | 紫 | 255,0,255 | 無変更
| 14 | 黄 | 255,255,0 | 無変更
| 15 | 白 | 255,255,255 | 無変更

### ~~日本語メッセージが文字切れする、カーソル移動がおかしい~~
致命的ではないが使っていて気分が悪い。コマンドラインをカーソル移動しながら修正していると入力位置と修正位置がずれてしまい、全体を再入力し直す羽目になる。

#### (追記)
2017年4月の Windows10 Creators Update 後に再インストールすることで、本件は解消した。

### git のバージョンが古すぎる
git が version 1.9.1 だった。これは古すぎる。git-core/ppa を登録して、最新版のgitにアップデートする。

```bash
$ git --version
git version 1.9.1

$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get upgrade
$ git --version
git version 2.11.0
```
#### (追記)
2017年4月の Windows10 Creators Update 後に再インストールすることで、version 2.7.4 になるが、やはり古いのでアップデートしておきたい。

## インストール直後のカスタマイズ
まずはホームに保存フォルダを作成し初期設定ファイルをそこへバックアップする。

```
$ mkdir orig save backup
$ sudo cp -p .* /etc/* orig/
```

次にパッケージを更新する。

```
$ sudo apt update
$ sudo apt upgrade
```

システムバージョンを確認する。

```
$  lsb_release -d
Description:    Ubuntu 14.04.5 LTS
```
~~微妙に古いが、末尾にまとめた関連記事によると 16.04LTS にアップグレードするのは一筋縄ではいかないようなので、このままにしておく。~~

#### (追記)
2017年4月の Windows10 Creators Update 後に再インストールすることで、16.04.1LTSとなる。`sudo apt upgrade` により16.04.2LTSに上がる。これなら実用上の問題はない。

日本語関連パッケージをインストールする。git関連も入れておく。開発関連も一通り入れる。

```
$ sudo apt -y install vim git tig jless nkf zip p7zip-full
$ sudo apt -y install build-essential libtool automake autoconf pkg-config
```

この時点で初期選択済みパッケージの一覧を保存しておく。

```
$ dpkg --get-selections > save/pkg-selections
```

bash設定を調整する。Ubuntuのデフォルト設定は充実しているので、.profile と .bash_logout は手を加えなくても良い感じ。.bashrc にヒストリ無視パターンを追加した。cd とか ls とか ps とか top など3文字までのコマンド入力や exit はヒストリに残す価値なし。

```
$ echo "export HISTIGNORE='?:??:???:exit:h *'" >> .bashrc
```

個人的な alias をお好みで設定する。

```
$ vim ~/.bash_aliases
$ source ~/.bash_aliases
$ alias
alias ..='pushd ..'
alias ...='pushd ../..'
alias ....='pushd ../../..'
alias a='alias'
alias cp='cp -i'
alias df='df -h'
alias du='du -h'
alias egrep='egrep --color=auto'
alias f='find . -iname'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias h='history'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias lt='ll -t'
alias mv='mv -i'
alias rm='rm -i'
```

gitパッケージに含まれている diff-highlight を起動可能にする。

```
$ sudo ln -s /usr/share/doc/git/contrib/diff-highlight/diff-highlight /usr/local/bin
$ sudo chmod +x /usr/local/bin/diff-highlight
```

## 関連記事

* Bash on Ubuntu on WindowsをUbuntu 16.04にアップグレードしてみる
http://qiita.com/Aruneko/items/2670f42d36a7508c13bb

* Bash on Ubuntu on Windowsで~/.profileが読み込まれない件の対応
http://pachicoma.hateblo.jp/entry/2016/09/19/Bash_on_Ubuntu_on_Windows%E3%81%A7~/.profile%E3%81%8C%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%AA%E3%81%84%E4%BB%B6%E3%81%AE%E5%AF%BE%E5%BF%9C

* Ubuntu新規インストール直後にやることリスト2016
http://qiita.com/hkuno/items/d77ee6b5aef8091892e7

* sudo: unable to resolve host が表示されたら
http://qiita.com/ogomr/items/89e19829eb8cc08fcebb
http://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution