Windows Terminalには、デフォルトで利用できるコマンドラインツールとして「Windows PowerShell」と「コマンドプロンプト」、そして「Azure Cloud Shell」が用意されている。WSL(Windows Subsystem for Linux)を有効にしている場合は、UbuntuなどのWSL上のLinuxディストリビューションも自動で追加されている。今回は、ここに新しいコマンドラインツールを追加してみよう。

Windows Terminalの動的プロファイル

Windows Terminalで複数のコマンドラインツールを利用している場合、ツールごとにプロファイルとして個別に設定が行えることはこれまでも説明してきた通りだ。「setting.json」のプロファイル設定の項目をよく見ると、各コマンドラインツールのプロファイルには、commandlineプロパティを持つものと、sourceプロパティを持つものの2種類があることがわかる。

commandlineプロパティは、使用するコマンドラインツールの実行ファイル本体を指定するもので、PowerShell(powershell.exe)やコマンドプロンプト(cmd.exe)のプロファイルはこのタイプになる。Windows Teminalは、PATH環境変数に含まれるパスのなかから指定された実行ファイルを探しに行く。

一方、sourceプロパティを持つプロファイルは、Windows Terminal自身か、または対象のコマンドラインツールがインストールされた時点で、自動で生成されたプロファイルだ。sourceプロパティの値には、そのプロファイルを作成する基になったアプリケーションの名前が設定されている。WSL(Windows.Terminal.Wsl)やAzure Cloud Shell(Windows.Terminal.Azure)がこのタイプになる。この場合、Windows Terminalはsourceプロパティの値から実行ファイルを自動で見つけるため、実際に実行ファイルがどこに置かれているのかを意識しなくてもよいようになっている。

プロファイルには2種類ある

この仕組みを「動的プロファイル」と呼ぶ。Windows Teminalに対応した新しいコマンドラインツールをインストールした場合、動的プロファイル機能が自動でプロファイルの設定を生成してくれるため、自分でsetting.jsonを書き直さなくても、新しいコマンドラインツールのタブやペインを使うことができるようになっている。

PowerShellの最新版をインストールする

さて、それでは実際に新しいコマンドラインツールを追加してみよう。Windows 10には最初からPowerShellがインストールされていてWindows Terminalでも使えるようになっているが、実はこれは「Windows PowerShell」と呼ばれている少し古いバージョンで、現在はより新しい「PowerShell 7.0」がリリースされている。

PowerShellの起動時に最新版の案内が表示される

PowerShellの最新版は、次のGitHubリポジトリからダウンロードできる。


ページ半ばにある「Get PowerShell」の一覧表から、自分の環境に合ったインストーラをダウンロードしよう。LTS版とstable板、Preview版があるが、通常はstable版で問題ないだろう。

最新版PowerShellのダウンロード

ダウンロードしたファイルを実行するとインストーラが起動するので、画面の指示に従ってインストールすればよい。

画面の指示に従ってインストールする

インストールが完了したら、一度Windows Terminalを終了させてから、再度起動してみよう。タブバーの横のドロップダウンメニューに、「PowerShell」という名前のプロファイルが増えているのが確認できるはずだ。

プロファイルが自動で追加されている

これを選択すると、これまでのWindows PowerShellとは別の、最新版のPowerShellのターミナルが立ち上がる。

最新版のPowerShell

setting.jsonを確認すると、「profiles」のブロックに、次のように今インストールしたPowerShellのプロファイル設定が自動で追加されていることがわかる。sourceプロパティの値は「Windows.Terminal.PowershellCore」となっている。

プロファイルが自動で追加される

これまでは最初からインストールされているWindows PowerShellがデフォルトのプロファイルになっていた、これを今インストールした最新版のPowerShellに変更してみよう。デフォルトのプロファイルを変更するには、第26回でも説明したように、対象のプロファイルのIDをdefaultProfileプロパティの値としてセットすればよい。

最新版のPowerShellをデフォルトプロファイルに設定する

最新版のUbuntuをインストールする

WSLのUbuntuも最新版にしてみよう。本稿執筆時点では、Microsoft Storeからバージョン指定なしのUbuntuを選ぶと、下図のようにバージョン18.04系がインストールされる。

バージョン指定なしのUbuntuをインストールした場合

すでにバージョン20.04系がリリースされており、Microsoft Storeからもインストールできるようになっているので、これを導入してみる。Microsoft Storeで「Ubuntu」を検索するといくつかのバージョンがヒットするので、そのなかから「Ubuntu 20.04 LTS」を選んでインストールしよう。

Microsoft StoreのUbuntu 20.04 LTS

インストールが完了したら、一度このUbuntu 20.04 LTSを実行する必要がある。初回起動時に必要な設定が行われるので、それまではWindows Terminalでも使用することができない。

初期設定のために一度実行しておく必要がある

初期設定の完了後、Windows Terminalを再起動すると、次のようにドロップダウンメニューに「Ubuntu 20.04」が追加されているはずだ。

Ubuntu 20.04が追加された

Windows TerminalでUbuntu 20.04が利用できる

ドロップダウンメニューに表示させない設定

コマンドラインツールが増えてくると、普段使わないプロファイルも出てくるだろう。不要なプロファイルはドロップダウンメニューに表示しないように設定できる。第26回でも紹介したが、次のように対象プロファイルのhiddenプロパティの値を「true」に変更するだけだ。

{
    "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "hidden": true,
    "name": "Ubuntu",
    "source": "Windows.Terminal.Wsl",
    "colorScheme": "Solarized Light"
},

プロファイルの自動生成を行わない設定

コマンドラインツールをインストールした際に、自動でプロファイルが生成されないようにすることもできる。setting.jsonの前半部分にある全体設定のところに、次のように「disabledProfileSources」というプロパティを追加し、値としてプロファイルの自動生成を無効にするコマンドラインツールを指定する。

プロファイルの自動設定を無効にする

以下は、WSLのプロファイルの生成を無効にする記述例である。

"disabledProfileSources": ["Windows.Terminal.Wsl"],

複数のコマンドラインツールを指定したい場合には、次のように「,(カンマ)」で繋いで追加していけばよい。これはWSLとAzure Cloud Shellを指定した例になる。

sabledProfileSources": ["Windows.Terminal.Wsl", "Windows.Terminal.Azure"],

WSLが使えるようになったおかげで、1台のWindowsマシンに複数のLinuxディストリビューションをインストールするといったケースも増えてきた。そのような場合でも、Windows Terminalは特別な設定なしでプロファイルを有効にできるので非常に便利だ。

参考資料