Bag of ML Words

ML = Machine Learning, Music Love, and Miscellaneous things in daily Livings

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 on Ubuntu on Windows

 

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をインストール、常駐してもらったうえで、それと通信するような感じに使う必要があります

 

どうやってやるか

 もうずいぶんまえのことで忘れてしまったけども。

qiita.com

に書いてあるようなやりかたでできます。

 

  1. まず、WSL上のUbuntuにapt-getでdockerを入れます。これはクライアント(?)になります。
  2. 次に、windows上でdockerアプリをインストールします。多分、これはPowerShellとかでそのまま使うことを想定している。

    docs.docker.com

  3. Docker for windowsが起動すると、タスクトレイに白いクジラさんが出てくるので、右クリックしてsetting --> General --> Expose daemon in tcp://localhost:2375 without TLSをonにする。
  4. 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があるんですけど、そのためにはUbuntusshd サービスを起動していないといけません。

普通のUbuntuなら何も考えずにサービス起動しっぱなしなんですが、WSLだと普通にやると起動のたびにsshdサービスが止まります。のでめんどい。これを、windowsが起動した瞬間からsshが欲しい。

 

どうやってやるか(now working)