=====================================
Windows 用演習環境の構築 (WSL の場合)
=====================================
.. contents:: 目次
:depth: 4
本資料の想定環境は「:doc:`introduction`」の「:ref:`target-environment`」で述べた通りですが、
Windows 10 または 11 上の
`WSL `_ に導入した
`Ubuntu `_ を POSIX 環境として用います。
.. _WindowsUpdate:
WSL 導入の事前準備 (Windows Update)
====================================
以降の WSL 導入手順は Windows 10 2004 以降と Windows 11 で有効です。
ただし Windows 10 は 2004 以降のバージョンであっても 21H1 以前のバージョンは
2022-12-13 時点でサポート提供期間が終了しています。
また、一つ前のバージョンである Windows 10 21H2 は今回の演習開始直後の 2023-06-13 でサポートが終了します [#Windows10Lifecycle]_。
Windows 10 を利用している場合は、最新版の Windows 10 22H2 に更新した上で作業に当たってください。
Windows 11 は初期バージョンの 21H2 であっても 2023-10-10 まで余裕がありますが [#Windows11Lifecycle]_、手元に 21H2 の環境がないため細かい動作の違い等まで確認出来ません。最新版の 22H2 に更新した上で作業に当たってもらったほうが良いでしょう。
.. [#Windows10Lifecycle] Windows 10 の各バージョンにおけるサポート期間の詳細は以下のページを参照してください。
* Microsoft / Docs / Microsoft Lifecycle / `Windows 10 Home and Pro `_
.. [#Windows11Lifecycle] Windows 11 の各バージョンにおけるサポート期間の詳細は以下のページを参照してください。
* Microsoft / Docs / Microsoft Lifecycle / `Windows 11 Home and Pro `_
使用中の Windows のバージョンを確認するには、
キーボードから [田 (Windows Logo Key)]+[R] キーを叩いて
「ファイルを指定して実行」ダイアログを開き、
「名前」の欄に「winver」と入力して (:numref:`winver コマンド`、:numref:`ファイル名を指定して実行 (winver)`) [ENTER] キーを叩いてください。
winver のダイアログが開き、使用中の Windows のバージョンを確認出来ます(:numref:`winver (Windows10 Pro バージョン 22H2)`)。
.. code-block:: bat
:class: forCnP
:caption: winver コマンド
:name: winver コマンド
winver
.. figure:: fig_run_winver.png
:name: ファイル名を指定して実行 (winver)
ファイル名を指定して実行 (winver)
.. figure:: fig_winver_Windows10Pro_22H2.png
:name: winver (Windows10 Pro バージョン 22H2)
winver (Windows10 Pro バージョン 22H2)
もし、Windows 10 21H2 以前のバージョンを用いている場合は、
まず 22H2 への更新(アップデート)を行って下さい。
Windows Update を用いると自動更新が可能なはずです。
Windows 10 の場合は [設定]→[更新とセキュリティ]→[Windows Update] から、
Windows 11 の場合は [設定]→[Windows Update] から開けます。
もし、Windows Update による自動更新が上手く行かない場合は、
Microsoft から入手可能な Windows の最新版 ISO イメージを用いると
手動で更新可能なはずです。
最新版 Windows の更新ファイル及び ISO イメージは以下から入手可能です。
* `Windows 10 のダウンロード `_
* `Windows 11 のダウンロード `_
上手く更新できない場合は相談してください。
.. _CLI_tuning:
WSL 導入の事前準備 (CLI の調整)
=================================
.. _fix_powershell_char_corruption:
PowerShell の文字化け対策
---------------------------
PowerShell で後述の winget コマンドを実行すると :numref:`winget文字化け` のように文字化けする場合があります。
これを防ぐ設定をしておきましょう。
.. figure:: fig_winget_char_corruption.png
:name: winget文字化け
PowerShell 上で winget を実行した際に生じた文字化け
「:ref:`HowTo-start-PowerShell`」で紹介した方法で PowerShell を開いて、
:numref:`PowerShell の文字化け防止コマンド` を PowerShell にコピペ [#コピペ]_ して実行してください。
この設定は、一般ユーザー権限でも可能です。
PowerShell を一旦閉じたら設定は終了です。
.. [#コピペ] この資料では :numref:`PowerShell の文字化け防止コマンド` のようにコマンドの下に「Copy」ボタンがある場合、
これをクリックすると、コマンドがクリップボードにコピーされます。
PowerShell に貼り付けて実行するには、PowerShell のウインドウでマウスの右ボタンをクリックするか、
[SHIFT]+[INTERT] キーを叩いてください。
.. code-block:: powershell
:class: forCnP
:caption: PowerShell の文字化け防止コマンド
:name: PowerShell の文字化け防止コマンド
cd "$Env:USERPROFILE\Downloads"
powershell.exe -C "&{reg.exe EXPORT HKCU\Console HKCU%2FConsole.$(Get-Date -Format yyyyMMdd_HHmmss).reg}"
reg.exe ADD HKCU\Console /f /v FaceName /d __DefaultTTFont__
reg.exe ADD HKCU\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe /f /v FaceName /d __DefaultTTFont__
reg.exe ADD HKCU\Console\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe /f /v FaceName /d __DefaultTTFont__
なお、「スタート」メニューから「PowerShell」を探して開く方法は、
文字化け対策の方法が上記の方法とは異なります。
「スタート」メニューから「PowerShell」を探して開く方法では、
Windows 11 は標準で文字化けしない設定になっているはずですが、
Windows 10 は文字化けするはずです。
文字化けする場合は次の手順で設定を行って下さい。
#. PowerShell のウインドウ左上のアイコンをクリックしてポップアップメニューを開く
#. 「プロパティ」選んで、設定ダイアログを開く。
#. 「フォント」タブを開き、「MS ゴシック」等の日本語フォントを設定する
#. 「OK」をクリックして設定ダイアログを閉じる。
これでダメな場合は、別のフォントに設定変更した後「MS ゴシック」に戻してみてください。
.. _initializing_winget:
winget の初期設定
------------------
winget は Windows 10 で導入された CLI 形式のパッケージマージャ―です。
初回の実行時に Microsoft Store における販売条件への同意を求められます。
「:ref:`HowTo-start-PowerShell`」で紹介した方法で PowerShell を開いて、
:numref:`winget でインストール済みの Terminal を検索するコマンド` を PowerShell にコピペして実行してみてください。
.. code-block:: powershell
:class: forCnP
:caption: winget でインストール済みの Terminal を検索するコマンド
:name: winget でインストール済みの Terminal を検索するコマンド
winget list -q Terminal
winget を始めて実行した場合、:numref:`winget 初回実行時の確認事項`、:numref:`winget 初回実行時の確認事項(画像)` のような確認を求められます。
ここで、 https://aka.ms/microsoft-store-terms-of-transaction にある Microsoft Store の販売条件について同意を行うと winget が利用可能になります。
同意するには [Y] キーを叩いた後、[ENTER] キーを叩いてください。
.. code-block:: ps1con
:caption: winget 初回実行時の確認事項
:name: winget 初回実行時の確認事項
PS C:\Users\kou> winget list -q Terminal
'msstore' ソースを使用するには、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。
すべてのソース契約条件に同意しますか?
[Y] はい [N] いいえ:
.. figure:: fig_winget_firsttime_exec.png
:name: winget 初回実行時の確認事項(画像)
winget 初回実行時の確認事項
.. tip::
この表示は一度同意すると、次回以降は行われません。
もし同意を取り消して再表示したい場合は、管理者権限で実行した PowerShell に :numref:`winget のソース契約条件への同意を解除するコマンド` をコピペして実行すると、:numref:`winget のソース契約条件への同意を解除するコマンドの実行結果` のように同意のリセットが行われます。(今はリセットする必要がないので実行する必要はありません。)
.. code-block:: powershell
:class: forCnP
:caption: winget のソース契約条件への同意を解除するコマンド
:name: winget のソース契約条件への同意を解除するコマンド
winget source reset --force
.. code-block:: ps1con
:caption: winget のソース契約条件への同意を解除するコマンドの実行結果
:name: winget のソース契約条件への同意を解除するコマンドの実行結果
PS C:\WINDOWS\system32> winget source reset --force
すべてのソースをリセットしています...完了
.. _install_WindowsTerminal:
Windows Terminal の導入
--------------------------
Windows の新しい terminal emulator である Windows Terminal の導入状況を確認しましょう。
Windows 11 の人は既に導入済みのはずですが、Windows 10 の人はまだ入ってないはずです。
winget の初回実行時の確認事項(:numref:`winget 初回実行時の確認事項`、:numref:`winget 初回実行時の確認事項(画像)`)に同意したら、
前出の :numref:`winget でインストール済み Terminal の検索するコマンド` をもう一度 PowerShell にコピペして実行してみましょう。
Windows Terminal が導入済の場合は :numref:`Windows Terminal が導入済の場合`、
Windows Terminal が未導入の場合は :numref:`Windows Terminal が未導入の場合` のような結果となるはずです。
.. code-block:: ps1con
:caption: Windows Terminal が導入済の場合
:name: Windows Terminal が導入済の場合
PS C:\WINDOWS\system32> winget list -q Terminal
名前 ID バージョン ソース
-----------------------------------------------------------------
Windows ターミナル Microsoft.WindowsTerminal 1.16.10261.0 winget
.. code-block:: ps1con
:caption: Windows Terminal が未導入の場合
:name: Windows Terminal が未導入の場合
PS C:\WINDOWS\system32> winget list -q Terminal
入力条件に一致するインストール済みのパッケージが見つかりませんでした。
Windows Terminal が未導入の場合は、:numref:`winget による Windows Terminal の導入コマンド` を PowerShell にコピペして実行すると
Windows Terminal が導入されます(:numref:`winget による Windows Terminal の導入コマンド実行結果`)。
.. code-block:: powershell
:class: forCnP
:name: winget による Windows Terminal の導入コマンド
:caption: winget による Windows Terminal の導入コマンド
winget install Microsoft.WindowsTerminal
.. code-block:: ps1con
:name: winget による Windows Terminal の導入コマンド実行結果
:caption: winget による Windows Terminal の導入コマンド実行結果
PS C:\WINDOWS\system32> winget install Microsoft.WindowsTerminal
見つかりました Windows Terminal [Microsoft.WindowsTerminal] バージョン 1.16.10261.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/microsoft/terminal/releases/download/v1.16.10261.0/Microsoft.WindowsTerminal_Win10_1.16.10261.0_8wekyb3d8bbwe.msixbundle
██████████████████████████████ 37.9 MB / 37.9 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
██████████████████████████████ 100%
インストールが完了しました
.. caution::
なお、稀に最新バージョンがインストールできない場合があるようで、
2022年度の講義資料作成中、 :numref:`winget による Windows Terminal の導入コマンド` ではインストールできない状況を確認しています。
おそらくタイミングが悪かっただと思うのですが、
その際は、:numref:`winget による Windows Terminal の導入コマンド(最新バージョンを新しい順に5つ試す)` のようにすることで、最新バージョンを新しい順に 5 つ選んでインストールを試行することにより、一つ前のバージョンをインストールすることが出来ました(:numref:`winget による Windows Terminal の導入コマンド(最新バージョンを新しい順に5つ試す)実行結果`)。
.. code-block:: powershell
:class: forCnP
:name: winget による Windows Terminal の導入コマンド(最新バージョンを新しい順に5つ試す)
:caption: winget による Windows Terminal の導入コマンド(最新バージョンを新しい順に5つ試す)
powershell.exe -C '&{$pkg=$Args[0];$n=$Args[1];winget show $pkg --versions|select -Skip 4|sort -Descending {[Version]$_}|select -First $n|% {echo $_;winget install $pkg --version $_;if($?){break}}}' Microsoft.WindowsTerminal 5
.. code-block:: ps1con
:name: winget による Windows Terminal の導入コマンド(最新バージョンを新しい順に5つ試す)実行結果
:caption: winget による Windows Terminal の導入コマンド(最新バージョンを新しい順に5つ試す)実行結果
PS C:\WINDOWS\system32> powershell.exe -C '&{$pkg=$Args[0];$n=$Args[1];winget show $pkg --versions|select -Skip 4|sort -Descending {[Version]$_}|select -First $n|% {echo $_;winget install $pkg --version $_;if($?){break}}}' Microsoft.WindowsTerminal 5
1.12.10983.0
該当するインストーラーが見つかりません。詳細については、ログを参照してください。
1.12.10982.0
見つかりました Windows Terminal [Microsoft.WindowsTerminal] バージョン 1.12.10982.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
██████████████████████████████ 100%
インストールが完了しました
.. _install_WSL_for_win10_2004_or_later_and_win11:
WSL の導入 (Windows 10 及び Windows 11 で 22H2 以降の場合)
==========================================================
.. warning::
前述の通り、2023-05-25 現在、21H1 以前の Windows 10 は既にサポート提供期間が終了しており、
一つ前のバージョンである 21H2 も間もなく(2023-06-13 に)サポート提供期間が終了します。
Windows 10 を利用している場合はバージョン 22H2 に更新した上で以下の手順を行って下さい。
また、22H2 未満では Microsoft Store 版が使用可能かどうかが不明です。
従来板である inbox 版 (Windows コンポーネント版) よりも Microsoft Store 版の方が機能が充実しているため、
Windows 11 も最新版の 22H2 にした上で作業を行ってもらったほうが良いでしょう。
.. note::
Windows 10 2004 よりも前のバージョンについては ``wsl --install`` による WSL 導入が出来ません。
これらの環境については、利用を推奨しませんが、2004 以降でも以前のバージョンと同じように
手動で導入するケースも考えられるため :doc:`SupplymentaryAboutWSL` に以前の導入方法をまとめています。
また、2022年11月以前は inbox 版 (Windows コンポーネント版) のみが利用可能でしたが、
2022年11月以降は Microsoft Store 版の提供が開始され、現在は Microsoft Store 版が標準となっています。
インストールの際 ``--inbox`` オプションを追加することで従来の inbox 版を選択することも可能ですが、
あえて inbox 版を選択するメリットはないでしょう。
ここからの作業は、管理者権限で起動した PowerShell をで行う必要があります。
まず、「:ref:`HowTo-start-PowerShell`」で紹介した方法で、
管理者権限で Windows PowerShell のウインドウを開いてください。
管理者権限の PowerShell が開いたら、``wsl --install -d Ubuntu`` (:numref:`WSL と Ubuntu のインストールコマンド`)と入力して [ENTER] キーを叩けば
WSL のインストールが開始されます(:numref:`WSL のインストール(途中経過)`)。
.. code-block:: powershell
:class: forCnP
:caption: WSL と Ubuntu のインストールコマンド
:name: WSL と Ubuntu のインストールコマンド
wsl --install -d Ubuntu
.. code-block:: ps1con
:caption: WSL のインストール(途中経過)
:name: WSL のインストール(途中経過)
PS C:\WINDOWS\system32> wsl --install -d Ubuntu
インストール中: 仮想マシン プラットフォーム
[================= 30.0% ]
無事インストールが終了すると、:numref:`WSL のインストール(正常終了、再起動待ち)` のように再起動を促されますので、Windows を再起動してください。
.. code-block:: ps1con
:caption: WSL のインストール(正常終了、再起動待ち)
:name: WSL のインストール(正常終了、再起動待ち)
PS C:\WINDOWS\system32> wsl --install -d Ubuntu
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu
Ubuntu はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
PS C:\WINDOWS\system32>
再起動後、WSL が自動的に起動してユーザー名 (:numref:`初回起動時の WSL とユーザー名の登録`) と
パスワード登録を確認のため 2 度 (:numref:`初回起動時の WSL とパスワードの登録(1回目)`、:numref:`初回起動時の WSL とパスワードの登録(2回目)`) 要求されます。
ユーザー名は半角の英数字、パスワードは半角の英数字及び記号を組み合わせて登録しましょう。
パスワードを失念すると WSL の環境を一旦消して再構築する必要が生じるので注意してください。
親環境である Windows のユーザー名とパスワードに揃えられる場合は揃えておくとよいでしょう。
.. code-block:: console
:caption: 初回起動時の WSL とユーザー名の登録
:name: 初回起動時の WSL とユーザー名の登録
Ubuntu は既にインストールされています。
Ubuntu を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
.. code-block:: console
:caption: 初回起動時の WSL とパスワードの登録(1回目)
:name: 初回起動時の WSL とパスワードの登録(1回目)
Ubuntu は既にインストールされています。
Ubuntu を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: USERNAME
New password:
.. code-block:: console
:caption: 初回起動時の WSL とパスワードの登録(2回目)
:name: 初回起動時の WSL とパスワードの登録(2回目)
Ubuntu は既にインストールされています。
Ubuntu を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: USERNAME
New password:
Retype new password:
.. code-block:: console
:caption: 初回起動時の WSL と登録完了
:name: 初回起動時の WSL と登録完了
Ubuntu は既にインストールされています。
Ubuntu を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: USERNAME
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This message is shown once a day. To disable it please create the
/home/kou/.hushlogin file.
USERNAME@HOSTNAME:~$
以上で WSL の導入は完了です。
.. _Howto-start-Ubuntu:
WSL の起動方法
===============
WSL で Ubuntu を開くには以下の手順を推奨します。
#. キーボードから [田 (Windows Logo Key)]+[R] キーを叩き「ファイルを指定して実行」ダイアログを開く。
#. 「名前」の欄に ``ubuntu`` と入力し(:numref:`ubuntu コマンド`、:numref:`ファイル名を指定して実行_powershell`) [ENTER] キーを叩く。
.. code-block:: text
:class: forCnP
:caption: ubuntu コマンド
:name: ubuntu コマンド
ubuntu
.. figure:: fig_run_ubuntu.png
:name: ファイル名を指定して実行_ubuntu
「ファイル名を指定して実行」ダイアログから Ubuntu を起動する。
以上で、conhost 上で動く WSL の Ubuntu のウインドウが開きます(:numref:`conhost 上で動く WSL の Ubuntu`)。
.. figure:: fig_WSL_conhost.png
:name: conhost 上で動く WSL の Ubuntu
conhost 上で動く WSL の Ubuntu
POSIX 環境では、様々な作業を行う際に、current directory (現在のディレクトリ)
もしくは working directory (作業ディレクトリ)という概念があります。
コマンドラインの端に表示されている ``USERNAME@HOSTNAME:~$`` の末尾の ``$`` の直前にある ``~`` の部分がそれを意味しています。
``~`` は HOME directory を意味しており、実体は ``/home/USERNAME`` です。
explorer.exe でこの場所を開くには、:numref:`WSL の作業ディレクトリを開くコマンド` のコマンドを実行します。
``explorer.exe`` は WSL 上から様々なファイルを開く事が出来るコマンドで、引数として与えた ``.`` が current directory を意味しています。
.. code-block:: text
:class: forCnP
:caption: WSL の作業ディレクトリを開くコマンド
:name: WSL の作業ディレクトリを開くコマンド
explorer.exe .
Ubuntu に ``wslu`` と呼ばれるパッケージをインストールしておくと
:numref:`WSL の作業ディレクトリを開くコマンド(wslview)` のコマンドでも同様の事が出来ます。
``wslview`` は WSL 上から様々なファイルを開く事が出来るコマンドです。
2022年5月の時点だと ``wslu`` パッケージは WSL 上の Ubuntu (20.04) に自動的にインストールされていたと記憶していますが、2023年5月26日の時点だと WSL 上の Ubuntu (22.04) には自動でインストールされていませんでした。
.. code-block:: text
:class: forCnP
:caption: WSL の作業ディレクトリを開くコマンド(wslview)
:name: WSL の作業ディレクトリを開くコマンド(wslview)
wslview .
explorer.exe で作業ディレクトリを開いた結果が :numref:`作業ディレクトリを開いた結果` です。
アドレス欄には「📂 > ネットワーク > wsl.localhost > Ubuntu > home > USERNAME」のように表示されていますが、
アドレス欄をクリックすると ``\\wsl.localhost\Ubuntu\home\USERNAME`` のように
ネットワーク上の共有フォルダを表すときと同じ :term:`UNC (Universal Naming Convention)` で表された PATH 名を確認することができます。
Windows から見ると WSL の管理しているファイルやフォルダはネットワーク上の共有フォルダと同じように見える仕組みになっているので、UNC 表記の PATH を用いると Windows 側から WSL 上のファイルにアクセス出来ます。
.. figure:: fig_explorer_wsl.png
:name: 作業ディレクトリを開いた結果
作業ディレクトリを開いた結果
.. figure:: fig_explorer_wsl_unc.png
:name: 作業ディレクトリを開いた結果(アドレス欄)
作業ディレクトリを開いた結果(アドレス欄)
逆に WSL 側から Windows 側のファイルを参照したい場合は ``/mnt/c`` 以下に Windows の ``C:`` ドライブがマウントされているので、ここからアクセス出来ます。
``C:`` ドライブ以外は手動でマウントを行う必要がありますが、先述の ``wslu`` パッケージに含まれる ``wslact`` コマンドを用いると、Windows に接続されているドライブを半自動でマウントする事も出来ます。
.. _LinuxShellHere:
Linux シェルをここに開く
-------------------------------
POSIX 環境では、様々な作業を行う際に
作業対象の保存されているディレクトリに current directory を移動してから作業をする必要があります。
GUI からシームレスに CLI に移行するための仕組みとして from here とよばれる機能みがあります。
ウインドウで開いているディレクトリを current cirectory にして CLI を開く機能です。
これは、ファルダのアイコンや、フォルダを開いたウインドウの余白部分を [SHIFT] キーを押しながら右クリックすると
「Linux シェルをここに開く」というメニュが表示されます(:numref:`Linux シェルをここに開くのコンテクストメニュー`)。
.. figure:: fig_LinuxShellHere.png
:name: Linux シェルをここに開くのコンテクストメニュー
Linux シェルをここに開くのコンテクストメニュー
Windows 11 では、表示されるコンテクストメニューが大きく変更されていますが、
一番下に表示される「その他のオプションを表示 Sift+F10」(:numref:`Win11ContextMenu`)から従来のコンテクストメニューを呼び出すことが出来ます。
.. figure:: fig_Win11ContextMenu.png
:name: Win11ContextMenu
Windows 11 のコンテクストメニュー
.. _WSLUbuntuHere:
コンテキストメニューへ WSL Ubuntu Here の登録
---------------------------------------------
OS のファイルマネージャー (Windows だと explorer.exe) で閲覧中のフォルダから、
作業ディレクトリを移動した状態で Windows Terminal から WSL の Ubuntu を開く機能を設定しましょう。
WSL への Ubuntu の導入と、Windows Terminal のインストールを済ませたら、
管理者権限で実行した PowerShell に :numref:`WSL Ubuntu here の登録コマンド` 内容をコピペして実行ください。
.. code-block:: powershell
:class: forCnP
:caption: WSL Ubuntu here の登録コマンド
:name: WSL Ubuntu here の登録コマンド
$icon=Get-AppxPackage|? Name -m Ubuntu|% {"$($_.InstallLocation)\$(($_|Get-AppPackageManifest).Package.Applications.Application.Executable)"} ;
New-Item -Force -Path Registry::HKCU\SOFTWARE\Classes\Drive\Shell\WSLUbuntuHere
New-Item -Force -Path Registry::HKCU\SOFTWARE\Classes\Drive\Shell\WSLUbuntuHere\command
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Drive\Shell\WSLUbuntuHere -Name "(Default)" -PropertyType ExpandString -Value "WSL Ubuntu here"
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Drive\Shell\WSLUbuntuHere -Name Icon -PropertyType ExpandString -Value "`"$icon`""
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Drive\Shell\WSLUbuntuHere\command -Name "(Default)" -PropertyType ExpandString -Value "`"%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe`" -d `"%L`" -p Ubuntu"
New-Item -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Shell\WSLUbuntuHere
New-Item -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Shell\WSLUbuntuHere\command
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Shell\WSLUbuntuHere -Name "(Default)" -PropertyType ExpandString -Value "WSL Ubuntu here"
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Shell\WSLUbuntuHere -Name Icon -PropertyType ExpandString -Value "`"$icon`""
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Shell\WSLUbuntuHere\command -Name "(Default)" -PropertyType ExpandString -Value "`"%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe`" -d `"%L`" -p Ubuntu"
New-Item -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Background\Shell\WSLUbuntuHere
New-Item -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Background\Shell\WSLUbuntuHere\command
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Background\Shell\WSLUbuntuHere -Name "(Default)" -PropertyType ExpandString -Value "WSL Ubuntu here"
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Background\Shell\WSLUbuntuHere -Name Icon -PropertyType ExpandString -Value "`"$icon`""
New-ItemProperty -Force -Path Registry::HKCU\SOFTWARE\Classes\Directory\Background\Shell\WSLUbuntuHere\command -Name "(Default)" -PropertyType ExpandString -Value "`"%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe`" -d . -p Ubuntu"
この設定を解除したくなった場合は、同様に管理者権限で実行した PowerShell から :numref:`WSL Ubuntu here の登録解除コマンド` を実行時手下さい。
.. code-block:: powershell
:class: forCnP
:caption: WSL Ubuntu here の登録解除コマンド
:name: WSL Ubuntu here の登録解除コマンド
REG DELETE HKCU\SOFTWARE\Classes\Folder\Shell\WSLUbuntuHere /f
REG DELETE HKCU\SOFTWARE\Classes\Drive\Shell\WSLUbuntuHere /f
REG DELETE HKCU\SOFTWARE\Classes\Directory\Shell\WSLUbuntuHere /f
REG DELETE HKCU\SOFTWARE\Classes\Directory\Background\Shell\WSLUbuntuHere /f
この設定を登録しておくと、ファルダのアイコンや、フォルダを開いたウインドウの余白部分を右クリックすると「WSL Ubuntu here」のメニュが表示されます(:numref:`WSL Ubuntu here のコンテクストメニュー`)。
.. figure:: fig_WSLUbuntuHere.png
:name: WSL Ubuntu here のコンテクストメニュー
WSL Ubuntu here のコンテクストメニュー