💻

WindowsTerminalのデフォルトのShellをPowerShell 7.2 にスイッチしたい

2022/03/15に公開約2,200字

長年のMac生活からWinに切り替え、毎日新しい発見を楽しんでおります。
ターミナルもご多分に漏れずMacとは使い勝手(というか根本から)色々と違っていてExciting。

ターミナルは標準のWindows terminalを使おうと思い、これをちょこちょこと使っていたのですが起動するたびに以下のメッセージが出ていたのでした。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows

どうやらPowerShellは7が出ており、これが最新との事。
以下のページを参考に7.2をInstallする事にしました。

https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7?view=powershell-7.2

ところが、7.2 のインストールが終わってもWindows terminalを起動すると
最新のPowerShell をインストールしてください」
と案内が変わらずに出てしまいます。
基本的にPowerShell の5と7は共存するようなので、Windows terminalは古い5の実行ファイルを参照したままの様子。

$PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      22000  282

( chsh -s とかやりたいのですが、当たり前のように chsh なぞ知らないと怒られる)

というわけで起動時に読み込まれるPowerShellの参照先を5から7に変更してあげないとダメそうです。

PowerShell7.2 のexe本体を探す

まず公式には7.2の場所はここだよと記載があります。
PowerShell 7: $env:ProgramFiles\PowerShell\7

しかしWindowsセカンド童貞の私には $env:ProgramFiles は何に置き換わるのか全くわかりませんでした。(恥
(echo $env とかtryしたけど普通に怒られた)

というわけで同僚の Win&Azureつよつよニキ に泣きついたところ、GUIで7.2の実行ファイルの場所の探し方を教えていただきました。

  1. Winキーを押してスタートメニューを表示
  2. PowerShell 7 がいるので、右クリック、からの、「ファイルの場所」を表示
      
  3. PowerShell 7 のフォルダの中にPowerShell 7 (x64)がいるので右クリック、からの、「プロパティ」を選択
     (人によってはx86 かもしれない)
     
  4. 上記画像のようにリンク先が取得できる
     ※このPowerShell 7 (x64)はエイリアスらしい

中身は以下
"C:\Program Files\PowerShell\7\pwsh.exe" -WorkingDirectory ~
最後の方の WorkingDirecotry なる文字列は一体なんなのかわかりませんが(今度勉強せねば・・)
ひとまず無視して pwsh.exe までをコピー

WindowsTerminal の設定にPathを貼る

Windows Terminal のタブにある v の文字をクリックし、設定を表示

左のペインから Windows PowerShell を選択
コマンドラインの中身が変更できるようになっているので、先程取得した
"C:\Program Files\PowerShell\7\pwsh.exe"
を入れて保存。
※中に半角スペースとかあるからダブルクォーテーションで囲っていないとダメらしい。

保存すると無事に起動時から7.2が実行されるようになりました 🎉

$PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      2      1

Discussion

ログインするとコメントできます