Edited at

Windows10のbashをzshで起動するように変更する

More than 3 years have passed since last update.

この記事は2016/7/18時点のPreview Build 14390に基づきます。

- 自分の検証範囲での動作確認のため、環境や処理内容やビルドバージョンによっては動作しません。

- 内容に誤りや検証不足の項目があった場合はご指摘いただけますと幸いです。


概要


  • bash on windowsをwindowsから起動するとchshによるログインシェル変更が適用されず/bin/bashが呼ばれる。(sshでログインすれば適用される。)

  • bash起動時の処理の中に、zshを起動する処理を書く。


  • /etc/profileに書いても良いが、/bin/bashを書き換えるのが速そうなのでこちらを変更する。


手順



  • sudo apt-get install zsh等で/bin/zshにインストールする。


  • /bin/bash/bin/bashbin等に名前を変更する。(念のため、他にもバックアップを作成すると良いです。)


  • /bin/bashを以下のように記述する。

#!/bin/sh

if [ $SHELL = /bin/bash ]; then
export SHELL=/bin/zsh
exec $SHELL
else
/bin/bashbin $*
fi



  • sudo chmod 755 /bin/bashで権限を変更する。

(失敗した際はC:\Users\{$USER}\AppData\Local\lxss\rootfs\binのbashを元のものに戻しましょう。)


補足



  • /etc/profileを読むより前なので、そちらを書き換えるより速いはず。


  • bashコマンドでのインストールスクリプト等の実行も問題なさそう。(参考元では動かなかったため)

  • tmuxは$SHELLのshellで起動するので、はじめからzshが起動する。


  • exec $SHELL -lでshellを再起動した場合も同じくzshが起動する。

  • 参考元と同様にpstreeコマンドを実行するとはじめからzshが動いていることになっている。

  • /bin/bashは最初にしか読まれていないようである。(プリントデバッグで検証。)


参考