Windows 10 Anniversary UpdateからサポートしたWSL(Windows Subsystem for Linux)。その結果としてWindows 10上でもBUW(Bash on Ubuntu on Windows)が動作し、各種Linuxコマンドが利用可能になった。本連載ではWSLに関する情報や、Bashから実行するシェルスクリプトを紹介する。

Windowsコンソールの設定はレジストリとショートカットファイルに格納

BUWを利用する上で、コマンドプロンプト(=Windowsコンソール)の存在は切り離すことはできない。本連載ではConEmuなどの端末エミュレータを紹介してきたが、アプリケーションのインストールを制限している環境では、利用をはばかる場合もある。そのため標準機能を使うことになるものの、肝心のコマンドプロンプトは、Windows 10 バージョン1507を最後に大きな更新は加わっていない。現行のWindows 10 Insider Previewも同じだ。

このことが以前から頭の片隅にあったのだが、2017年6月20日(現地時間)にMicrosoftが公開した公式ブログを目にして思い出したので、今回はこちらの内容を踏まえつつ、Windowsコンソールに関するTipsをご紹介する。

まず、現時点の問題として、Windowsコンソールの設定はOSアップグレード時にリセットされるという。例えば直近のWindows 10 バージョン1703(Creators Update)を適用した際は、同バージョン1607(Anniversary Update)で行ったカスタマイズはすべて破棄される。理由としてWindowsコンソールの設定はレジストリもしくはショートカットファイルから呼び出されるものの、これらの情報は既定値にリセットされるからだ。

Windowsコンソールのアプリコマンドには<既定値>と<プロパティ>が並ぶ

ここでWindowsコンソールのアプリコマンドを確認してほしい。以前から同コマンドメニューには、<既定値>と<プロパティ>が並んでいるが、前者はHKEY_CURRENT_USER\Console\{サブキー}などに変更情報を保存し、後者もレジストリおよびショートカットファイルに変更情報を保存している。

<プロパティ>から設定を変更すると、「Bash on Ubuntu on Windows(.lnk)」の更新日時が更新される

Microsoftの説明によれば、Windowsコンソール起動時は1番目に「conhostv2.dll」から設定情報を読み込み、2番目にHKEY_CURRENT_USER\Consoleキーの情報を読み込んでから、サブキーに続く。例えばBUWを起動した場合はHKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exeキー、Windows PowerShellの場合はHKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exeキーという具合だ。そして最後にショートカットファイルから設定情報を読み込んでいる。重複する設定情報は後から読み込んだ情報を上書きする仕組みだという。

レジストリエディターでHKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exeキーを開いた状態。コードページやフォント名などを確認できる

前述のとおり、これらの情報はOSアップグレード時にリセットされるため、プロパティダイアログで基本的な設定をすべて行ってから、HKEY_CURRENT_USER\Consoleキーの情報をレジストリファイルとしてエクスポートしておくとよい。そして、OSアップグレード後に設定を復活させるため、レジストリファイルを結合すれば以前の状態を復活できる。なお、先に紹介した公式ブログでは、各レジストリエントリーの個別説明も行われているため、興味のある方は参考にしてほしい。

HKEY_CURRENT_USER\Consoleキーを右クリックし、<エクスポート>をクリックする

任意のファイル名を付けて、レジストリファイルをデスクトップなどに保存する

OSアップグレード後はレジストリファイルをダブルクリックし、画面の指示に従って内容を結合する

もっとも、この操作方法は今後不用になるだろう。Microsoftは「コンソール設定を扱いやすく、管理しやすくするためのツールに取り組んでいる」と、公式カスタマイズツールの公開を今後予定しているからだ。設定方法は容易であればあるほど好ましいため、ツールの早期公開を期待したい。

Windowsコンソールで使用するフォントの指定

さて、Windowsコンソールにおけるもう1つの問題がフォントである。以前のWindowsはHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFontキーにエントリーを追加するなど、レジストリ操作が必要だったように記憶しているが、今回確認した限りでは不用だった。そのため、お好みの等幅フォントをインストールし、プロパティダイアログから選択するだけでよい。なお、筆者はM+とIPAの合成フォント「MigMix」をお薦めする。

WebサイトからダウンロードしたZIPファイルを展開し、MigMixフォントを右クリック。メニューから<インストール>をクリックする

プロパティダイアログの<フォント>タブから「MigMix 1M」などお好みのフォントを選択する。なお、こちらの場合はサイズも1段階上げると使いやすい

下図に示したのがフォントを変更した結果だ。MSゴシックのサイズは「16」、MigMix 1Mはサイズを「18」に変更しているが、WindowsコンソールのウィンドウサイズはX方向が縮まっていることに気付かれるだろう。また、行間が少々広く感じるが、このあたりは好みの問題となるため、ご自身がお好みのフォントを選択してほしい。

こちらはMSゴシックを指定した初期状態。比較用に用意した

「MigMix 1M」を選択した状態。ウィンドウサイズはいずれも80(幅)×30(高さ)だ

阿久津良和(Cactus)