俺の Bash on Windows10 環境

  • 62
    いいね
  • 3
    コメント

はじめに

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. 必要パッケージのインストール

サブシステム上で自分のほしいパッケージを入れてください。

$ 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 を入れたいと思います。

$ sudo apt-get install uim-fep uim-anthy

でインストールです。

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

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

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

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

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

5. Xming の導入

Xming、 Xming-fonts の両方をインストールしてください。ダウンロード先(OSDN) のリンクはこちら

6. X11 を使うための設定

~/.bashrc に環境変数として

~/.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 で始まる文を記述した場合は以下のように書き換えてください。

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

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

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

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

完成!

一応、これで全てできました。導入が成功していれば、以下のようになっているはずです。
lxterm.png

gp.png

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

追記

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

参考

uim-fep - Qiita
Bash on Ubuntu on Windows + XmingによるGUI - Qiita
Xサーバ Xming でフォントが小さい場合