はじめに
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
ファイルを編集し、
(define default-im-name 'anthy)
(define-key generic-on-key? '("<Control> " "`"))
(define-key generic-off-key? '("<Control> " "`"))
を記述してください。これにより、FEP が Anthy で動き、かつ、C-<Space>
か C-`
で日本語<===>直接入力の切り替えができるようになります。また、この FEP を利用するために、
export XMODIFIERS=@im=uim
exec uim-fep -e bash
を記述しておいてください。
5. Xming の導入
Xming、 Xming-fonts の両方をインストールしてください。ダウンロード先(OSDN) のリンクはこちら。
6. X11 を使うための設定
~/.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
で始まる文を記述した場合は以下のように書き換えてください。
if [ -t 1 ]; then
exec uim-fep -e zsh
fi
さらに、起動時に lxterminal を起動させ、その中で zsh + FEP を起動させたい場合は、以下のようにします。
if [ -t 1 ]; then
exec lxterminal -e uim-fep -e zsh
fi
僕の .bashrc
は上のようになりました。
完成!
一応、これで全てできました。導入が成功していれば、以下のようになっているはずです。
お疲れ様でした。何か気になる点があればどしどしコメント欄へどうぞ。素人なりにお答えします。
追記
(2016/09/13)
起動時のカレントディレクトリが Windows のホームフォルダになってて嫌だ!という方は、上の if
文の前の行に、cd ~
を追加してください。
参考
uim-fep - Qiita
Bash on Ubuntu on Windows + XmingによるGUI - Qiita
Xサーバ Xming でフォントが小さい場合