blog.euxn.me

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

2016-07-18 Mon.

この記事は 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を以下のように記述する。
1#!/bin/sh
2if [ $SHELL = /bin/bash ]; then
3 export SHELL=/bin/zsh
4 exec $SHELL
5else
6 /bin/bashbin $*
7fi
  • 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 は最初にしか読まれていないようである。(プリントデバッグで検証。)

参考

Other Works
2024-12-01 Sun.
OpenAPI Spec を出力できる DSL、TypeSpec の実践例
- ドワンゴ教育サービス開発者ブログ

2024-11-16 Sat.
型付き API リクエストを実現するいくつかの手法とその選択
- TSKaigi Kansai 2024

2024-09-10 Tue.
corepack が標準同梱じゃなくなる未来、 mise でパッケージマネージャを管理する
- Zenn

2024-09-10 Tue.
言語環境の管理は *env や *vm を超えて、 mise へ
- Zenn

2024-06-28 Fri.
TypeSpec を使い倒してる
- Kyoto.js 22

2024-05-11 Sat.
Powerfully Typed TypeScript
- TSKaigi 2024

2024-05-10 Fri.
pnpm の node_modules を探検して理解しよう
- ドワンゴ教育サービス開発者ブログ

2024-03-17 Sun.
neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
- Zenn

2023-12-20 Wed.
レガシーブラウザ向けのビルドオプションを剪定する
- ドワンゴ教育サービス開発者ブログ

2023-05-26 Fri.
Next.js で dynamic import を使い Client だけで動かす Component を実現する
- Zenn

2023-05-02 Tue.
Node.js でファイル名から拡張子を取り除く/取り出すために path.parse を使う
- Zenn

2023-02-27 Mon.
WSL2 で外部からアクセス可能にするために bridge mode を有効にする
- Zenn

2023-01-26 Thu.
init.vim & dein から init.lua & lazy.nvim へ、シンプル設定で移行した
- Zenn

2023-01-13 Fri.
kindle の本をブクログ形式の csv でエクスポートする@2023初春
- Zenn

2023-01-10 Tue.
自宅サーバの移設に際して docker から nerdctl に移行した
- Zenn

2023-01-10 Tue.
自宅サーバを rootless に移行した際のトラブル対応
- Zenn

2021-11-11 Thu.
並列実行した Promise で throw されても全てハンドルしたいときの方法(allSettled, finally, etc...)
- Zenn