*nixで過ごす日々

PCでの作業に役立つ情報を提供するブログ

今更だが Windows Terminal + MSYS2 + zsh の環境を構築する

windowsではpowershellを使っていたが、とにかく起動が遅い。遅すぎるよ…
代わりのshellとしてMSYS2を使ってみることにする。

インストール

インストールはscoopで行う。
scoopが既に導入済みだったため使った。
別にscoopじゃないとダメとかではない。

> scoop install msys2

初回起動&パッケージのインストール

初回起動時にpacmanの鍵の設定やホームディレクトリの作成が行われる。
そのため、この段階で一回起動しておく。
パスは%USERPROFILE%\scoop\apps\msys2\current\msys2_shell.cmd
(ユーザー名が含まれるパスのため環境によって文字列が変化するので%USERPROFILE%と表記するが、実際の操作ではC:\Users\okutom\のように絶対パスで操作をしている。)

msys2起動後、使用するパッケージをインストールする。

$ pacman -S zsh unzip vim

インストール後一旦終了する。

Windows Terminalの設定

Windows Terminalの設定画面で新しいプロファイルの追加を行う。
名前: MSYS2
コマンドライン: %USERPROFILE%\scoop\apps\msys2\current\msys2_shell.cmd -defterm -no-start -msys
開始ディレクトリ: %USERPROFILE%\scoop\persist\msys2\home\ユーザー名
アイコン: %USERPROFILE%\scoop\paas\msys2\current\msys2.ico

zshを使うための設定

%USERPROFILE%\scoop\apps\msys2\current\msys2_shell.cmdテキストエディタで開き編集する。
デフォルトではbashを指定して起動するようになっているためzshに変える。

- set "LOGINSHELL=bash"
+ set "LOGINSHELL=zsh"

デフォルトではln -sを実行した時にシンボリックリンクは作成されずファイルコピーで動作するようになっている。
シンボリックリンクを作成するように変更する。

- rem set MSYS=winsymlinks:nativestrict
+ set MSYS=winsymlinks:nativestrict

また、シンボリックリンクを作成するためにはmsys2を管理者権限で実行するか、開発者モードをオンにする必要がある。
Windows11では 設定 > プライバシーとセキュリティ > 開発者向け > 開発者モード で設定出来る。

msys2でgitをインストールして使うと正常に動作しない。
windowsのgitを使うようにパスを引き継ぐ設定をする。

- rem set MSYS2_PATH_TYPE=inherit
+ set MSYS2_PATH_TYPE=inherit

感想

powershellよりは起動が早いと感じる。
ただ、linuxで使っているテーマを適用するとcdlscatとかを使った後に1秒くらい止まる。
標準出力周りがなにか悪さしている?

また、ssh-agentの設定でpsコマンドを使っているのだが、msys2のpsコマンドはcygwin由来のコマンドでxオプションが無いらしい。
起動時に毎回

ps: unknown option -- x
Try `ps --help' for more information.

と出るのが鬱陶しい。