WSL?
Windows Subsystem for Linuxの略です。
一言でいうと、「Windows 10上で動作するLinuxサブシステム」となります。
今回は、このWSLとMacで動作するdotfilesを作成しました。
作ったdotfiles
shuntaka9576/dotfiles
※ 環境を大きく変えるため利用する際には注意してください!
動作環境
- Ubuntu 18.04 LTS(ストアアプリ)
- macOS Mojave(10.14.3)
dotfilesの構成
- neovim
- fish
- tmux
- 上記の環境を構築ための、shellスクリプト
Install方法
curlで雑に環境構築できます。よく見る方式ですね。
curl -L raw.github.com/shuntaka9576/dotfiles/master/init/install.sh| bash
WSLで動いてる感じ
ターミナルにはwsl-terminalを利用しています。
フォントや透明度は、設定から変更することが可能です。(透過いい...)
初めはCmderを使っていましたが、neovimを縦分割したときの表示崩れが酷くて辞めました。
PythonやGolangのLSPであるpylsやgoplsも問題なく動作しました。
勉強になったこと
Linux-brew
Linux-brewを利用して、MacとWSLの環境構築部分をほとんど共通化したところです。
もちろんPATHの問題はでるため、そこは.bashrc
やconfig.fish
で差を吸収しています。
CeontOSやAmazonLinux2に対応させる場合も、Linux-brew
を利用すればかなり環境構築が楽になりそうですね。。(yumは本当に色々ないので、、)
WSL判定
[shell] WSL かどうかを判別するを参考にしました。
リンク先の一例である/proc/sys/fs/binfmt_misc/WSLInterop
というファイルシステムの存在判定で、
WSLかどうかを判定をしています。
# Macなら普通のbrew、WSLならLinux-brewを入れる処理をする箇所
if [ "$(uname)" == 'Darwin' ]; then
echo 'Install brew [Mac]'
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
echo 'Install modules only for Mac'
~/dotfiles/init/setup/mac.sh
elif [ -f /proc/sys/fs/binfmt_misc/WSLInterop ]; then
echo 'Install brew [WSL]'
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
echo 'Install brew [Linux]'
else
exit 1
fi
最後に
WSLは、Ubuntuなので動いて当然ちゃ当然なのですが、やはりピュアUbuntuとは異なる点が多いため今回試してみました。
プラグインモリモリのneovimが動いたので、本格的にWindowsでガリガリコードが書けそうな感想を抱きました。
ターミナル周りで良いツールが出ると更に良いと思いました。(個人的には、前述のwsl-terminal
で十分でしたが)
WSLは、昨年後半ごろにWSL上でDocker Engineが動くようになっていたっぽいという話があったりと、これからさらに楽しみです。
Special Thanks!!!
lighttiger2505/.dotfiles
構成や内容を大いに参考(パク..)にさせていただきました。
本当に知見しかなかったです。。。助かりました。。。。
Windows10で快適なfishシェル環境構築
fishのthemeは、フォントを入れないと文字化けするので、上記の手順を利用して解決しました。