Windows 10 の PowerShell で Backspace の音を消す方法 + PowerShell のプロファイル

皆様、こんにちは

Windows 10PowerShell で、Backspace を押したときに消せる文字がないと ピ と音が鳴るようになりました。
これは、Windows 10PowerShell が、既定で "PSReadline" モジュールをロードするようになったからです。

この音が非同期で再生されたらいいものの、律儀に 1 つずつ丁寧に鳴ります。
結果、Backspace を連続して押してしまったときには、しばらく ピピピピピピピピピピピ と鳴り続けることに…。

これは、音が出る環境の方には、なかなかつらいですね。
今回は、この音を消す方法を紹介します。

音を消す方法

PowerShell で以下のコマンドを入力することで、この音を消すことができます。

 > Set-PSReadlineOption -BellStyle None

これで、音がならなくなります
しかし、このコマンドは、現在のセッションに対してのみ有効となるため、別のウィンドウを起動するとまた鳴ってしまいます。

Set-PSReadlineOption
Set-PSReadlineOption
Customizes the behavior of command line editing in PSReadline.
・・・
-BellStyle
Specifies how PSReadLine should respond to various error conditions or user prompts. If you do not specify this parameter, the default response is Audible.

既定の設定にする

PowerShell には、プロファイルがあります。
このプロファイルに、自分だけの設定 (例えば、モジュールの読み込み や エイリアスの設定、関数の追加 等) を追加することで、PowerShell 起動時に自動的に適用できます。

プロファイルには、以下の 4 種類があります

  • AllUsersAllHosts : すべてのユーザー、すべてのホスト (C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1)
  • AllUsersCurrentHost : すべてのユーザー、現在のホスト (C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1)
  • CurrentUserAllHosts : 現在のユーザー、すべてのホスト (%USERPROFILE%\Documents\WindowsPowerShell\profile.ps1)
  • CurrentUserCurrentHost : 現在のユーザー、現在のホスト (%USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1)

ユーザーは、現在 PowerShell を実行しているユーザーのことです。
ホストとは、Windows PowerShell をホストするプログラムのことです。
代表的なものに、PowerShell ISE がありますね。
なので、PowerShell でも PowerShell ISE でも、他の PowerShell をホストするプログラム 全てに適用したい場合は、AllHosts となります。

基本的には、各ユーザー・各ホストごとに設定しておくのが良いです。

では、先ほどの Set-PSReadlineOption -BellStyle None をプロファイルに追加してみましょう。
まずは、以下のコマンドを実行し、プロファイルの .ps1 ファイルを開きましょう。

 > notepad $PROFILE

$PROFILE のみで実行していただくと分かりますが、これは、$PROFILE.CurrentUserCurrentHost と同じパスが返ってきます。
もし、すべてのユーザー、すべてのホスト に適用したい場合は、下のようになります。

 > notepad $PROFILE.AllUsersAllHosts

上のコマンドを実行すると、メモ帳が起動し、プロファイルを保持している .ps1 ファイルが開きます。
既存のプロファイルがない場合は、以下のポップアップが表示されるので、[はい] をクリックします。

f:id:yaimairi:20160909224841p:plain
※この画像では、$PROFILE.AllUsersAllHosts を開いた場合のパスになっています。

起動したメモ帳に先ほど入力した Set-PSReadlineOption -BellStyle None を入力し、[ファイル] - [上書き保存] をクリックしましょう。
※AllUsers が含まれるプロファイルの場合は、保存するために管理者権限が必要となります。
そのため、PowerShell を管理者権限で起動しましょう。

上書き保存が終わったら、PowerShell の新しいウィンドウを開いてみましょう。
どうですか?音が鳴らなくなりましたか?

これで、次回以降も音が鳴らない快適な PowerShell が開きます!

about_Profiles
Windows PowerShell プロファイル