zsh on Ubuntu on Windows Subsystem for Linux
WSLのデフォルトシェルはバッシュなんですけど、やっぱzsh使いたいよねぇとか、あとWSLならではの設定とかいろいろここ1か月苦労していたので、メモを残しておきましょう。
随時修正ってことで。
zshでしょ
まあ、これは普通にzsh入れればいいんですが、普通にやると、bash on windows起動 --> zsh起動になってうれしくない。
今の私の環境は、Ubuntuのアイコン(ショートカット)がデスクトップとアイコンバーにあって、それをクリックするとzshのターミナルが開く状態です。
どうやるか
普通に考えると.bashrcでまずzsh開くようにすればよい。
if [ -t 1 ]; then
exec zsh
fi
私の場合は、chshを使って/etc/passwdの中身を書き換えています。
参考:
zshを入れた後は、preztoとかauto-completionとかいれて、
あとはコンソールの見た目を手でいじります。時間入れたりとか。
参考:
prezto:
GitHub - sorin-ionescu/prezto: The configuration framework for Zsh
auto-completion:
GitHub - zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh
fzf(超便利):
GitHub - junegunn/fzf: A command-line fuzzy finder
zsh-syntax-hilighting(多分上記をインストールするとenableされてる):
GitHub - zsh-users/zsh-syntax-highlighting: Fish shell like syntax highlighting for Zsh.
Dockerが動かない・・・?
結論から言うと、Ubuntu上でaptとかしてdocker入れても動きません。Windowsネイティブのdocker for windoesをインストール、常駐してもらったうえで、それと通信するような感じに使う必要があります
どうやってやるか
もうずいぶんまえのことで忘れてしまったけども。
に書いてあるようなやりかたでできます。
- まず、WSL上のUbuntuにapt-getでdockerを入れます。これはクライアント(?)になります。
- 次に、windows上でdockerアプリをインストールします。多分、これはPowerShellとかでそのまま使うことを想定している。
- Docker for windowsが起動すると、タスクトレイに白いクジラさんが出てくるので、右クリックしてsetting --> General --> Expose daemon in tcp://localhost:2375 without TLSをonにする。
- ubuntuのdockerがこのポートと通信するように設定する。.bashrcや.zshrcに
export DOCKER_HOST='tcp://0.0.0.0:2375'
を書き足せばOK
SSHが毎回主導でサービス起動しないといけない
Ubuntu上でpython環境とかをpyenvで作っているので、windowsネイティブのエディタ(pycharmとかVS Codeとか)もそのpythonを参照してデバッグとかコンパイルしたいです。pycharmはそのための仕組みとしてremote interpreterがあるんですけど、そのためにはUbuntuがsshd サービスを起動していないといけません。
普通のUbuntuなら何も考えずにサービス起動しっぱなしなんですが、WSLだと普通にやると起動のたびにsshdサービスが止まります。のでめんどい。これを、windowsが起動した瞬間からsshが欲しい。
どうやってやるか(now working)