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

  • 66
    Like
  • 5
    Comment

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

インストール手順

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

原因は、bashを実行するコンソールウィンドウのプロパティに ラスターフォント が設定されているためだった。
console-prop.PNG

コンソールウィンドウの左肩にあるアイコンを右クリックし、開いたメニューからプロパティを選択してフォント設定をラスタフォントから MS ゴシック に変更したところ、日本語の文字化けが修復した。
console-ok.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

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

bashコンソールの色が暗い

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

調整前 調整後
console-color.PNG console-color-tuned.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にアップデートする。

$ 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

関連記事