WSLのbashの遅さを玉砕するためのTips

私は元気です。つまり、これはTips集(Tipshu)です。

WSL(Ubuntu)のbashは、起動がPowerShell並みに遅く、Tabを押そうものなら世界の速が消滅するという事が知られており、絶望です。という訳で、どうにかしましょう。

方針

速が無い原因として、WSLの業こと、プロセス生成の遅さが挙げられます。Ubuntuはユーザーフレンドリーなので、デフォルトのrcfileは、プロセスの生成を行いまくるようになっています。という訳で、できる限りプロセスを生成させない方向で、調整していきましょう。

ゴミを捨てる

こいつらをaptのDBから抹消すれば、それだけで軽くなります。

apt-get purge bash-completion command-not-found

command-not-foundは、殺すとslと打った時のストレスが軽減されます。

bash-completionが抱えているカルマは凄まじく、コイツを殺すだけでも、世界に速が戻ってきます。Tabが押し放題になり、きれいなチョコレートケーキが爆ぜて、永遠の平穏が訪れるワケですね。

これはTipsですが、/etc/bash.bashrcbash-completionを読んでくれるため、aptを使って世界から抹消しないと意味が無い。

秘伝のbashrcを見直す

残り全部コレです。

コマンドを殺せ

可能な限り、コマンドを実行しないようにしましょう。コマンドの実行を排除するだけでも、かなりの高速化が期待できます。command -vでコマンドの存在確認をしようものなら、0.1秒が発生するという覚悟で行け。

シェルのビルトインだけでも、案外色々な事ができます。例えば、文字列操作、そしてファイルの読み込み(read -r _x < file)。つまり、ビルトインに詳しくなって、$()ジェノサイドをするをしましょう。

PS1__git_ps1を導入しない事も重要です。コマンドを一つ実行するだけで、体感できる程プロンプトが遅くなります。複雑な事をする__git_ps1……何故人は……???

env系のアレは遅延ロードでシノぐ

nvmrbenv、そしてanyenv。世の中には環境があり、満ちもあります。しかし、コイツらは複雑です。シェルを遅くします。しかし、便利なので殺せない。という訳で、折衷案として遅延をします。

nvm () {
    unset -f nvm
    . "$NVM_DIR/nvm.sh"
    nvm "$@"
}

sourceする所をシェルの関数として定義すれば、起動は遅くならない。

賢い入力補完は諦める

初手bash-completion殺しをした時点で、慈悲は無い。賢い入力補完はコマンドを実行します。諦めましょう。

話は以上だ

ハイ、頑張っていきましょう。