知っている人には今更ながらすぎる話だが、実行ファイルで当該の実行中プロセス(シェル)を操作するのは難しい。ところが、幾つかのCLIツールはシェルを装飾したり、簡単に移動してくれる

これはどういうトリックなのかと言えば、シェルのプロファイルがカギになる

例えばzoxideというツールはPowershellだと以下の設定を書き込まなければいけない

Invoke-Expression (& {
 $hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
 (zoxide init --hook $hook powershell | Out-String)
})

結論を言ってしまえば、シェル用のスクリプトを吐き出す為のサブコマンドを実行ファイルに乗っけている

zoxideを使うとzというコマンドが使えるようになるが、これは__zoxide_zにエイリアスをかけたもので、公式Githubの中身を参照するならtemplates 傘下の各種シェル用テンプレートを展開しているというトリックになる

こういうものは結構色んなCLIツールで使われているが、意外とこの話について書いてくれるような記事をあまり見かけないので、とりあえず書いておく

個人的にもなんかこういう系でやってみたい気もするが、シェルスクリプトを覚えるのが面倒なので中々やれない。いつかやりたい