Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Enable Bash-Style History Search and Suggestions in PowerShell

2025年09月21日に「Dev.to」が公開したITニュース「Enable Bash-Style History Search and Suggestions in PowerShell」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

PowerShellでBash風の履歴検索やインライン予測候補(サジェスト)機能を有効にする方法を解説する。PSReadLineモジュールをインストールし、プロファイルに設定を追加すれば、↑/↓キーで過去のコマンドを効率的に呼び出し、入力の手間を省くことができる。

ITニュース解説

システムエンジニアを目指す上で、日々の開発や運用作業においてコマンドラインインターフェース(CLI)は避けて通れない重要なツールだ。Windows環境ではPowerShell、Linux環境ではBashといったシェルが広く使われている。それぞれのシェルには独自の機能や操作性があるが、多くのシステムエンジニアが両方の環境に触れる機会を持つため、操作性が統一されていると作業効率が格段に向上する。この記事では、PowerShellの操作性をLinux系のBashに近づけ、特に「過去のコマンド履歴を効率的に検索し、入力補完を素早く行う」機能を有効にする方法について詳しく解説する。

この便利な機能を実現するのは、「PSReadLine」というPowerShellのモジュールである。PSReadLineは、PowerShellでのコマンド入力体験を大幅に向上させるために作られたもので、高度な履歴検索、コマンドの入力補完(サジェスト)、そしてキーバインドのカスタマイズといった機能を提供する。これを導入することで、以前実行した複雑なコマンドを記憶に頼らず素早く探し出し、手入力の手間を大きく削減できるため、日々の作業がよりスムーズになる。

まず最初に行うべきは、現在使っているPowerShellのバージョンを確認することだ。これは、PSReadLineモジュールがPowerShellに標準で含まれているかどうかを判断するために重要となる。PowerShellのウィンドウを開き、「$PSVersionTable.PSVersion」と入力してEnterキーを押す。表示される結果の「Major」バージョンが「7」以上であれば、PSReadLineはすでに含まれているため、追加のインストール作業は不要である。もしバージョンが「5.1」などの古いものであれば、次のステップでPSReadLineをインストールする必要がある。

PowerShellのバージョンが5.1だった場合は、PSReadLineモジュールをインストールする。この作業はシステムの一部を変更するため、PowerShellを「管理者として実行」する必要がある。スタートメニューからPowerShellを探し、右クリックして「管理者として実行」を選択する。管理者権限で起動したPowerShellのウィンドウで、「Install-Module PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck」というコマンドを入力し、Enterキーを押す。このコマンドは、Install-ModuleでPSReadLineモジュールをインストールすることを指示する。-Scope CurrentUserは、インストールが現在のユーザーのみに適用されるように指定し、他のユーザーには影響しない。-Forceオプションは、すでにモジュールが存在する場合でも強制的に更新または上書きする。-SkipPublisherCheckは、モジュールの発行元の確認をスキップするオプションで、信頼できるPSReadLineモジュールでは問題なく利用できる。この手順により、PSReadLineがあなたのPowerShell環境に導入される。

次に、PowerShellのプロファイルファイルを編集する。プロファイルファイルとは、PowerShellが起動するたびに自動的に読み込まれる設定ファイルのことである。このファイルに設定を書き込むことで、一度設定すればPowerShellを起動するたびにその設定が自動的に適用されるようになる。プロファイルファイルのパスは環境によって異なる場合があるため、「$PROFILE」というPowerShellの組み込み変数を入力してEnterキーを押すと、あなたのプロファイルファイルの正確な場所が表示される。もしこのファイルが存在しない場合、「if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -ItemType File -Force }」というコマンドを実行すると、新しいプロファイルファイルが作成される。ファイルが用意できたら、「notepad $PROFILE」と入力してEnterキーを押すと、メモ帳が起動し、そのプロファイルファイルが開かれる。

メモ帳で開かれたプロファイルファイルに、以下の五行を追加する。 「Import-Module PSReadLine」 「Set-PSReadLineOption -PredictionSource History」 「Set-PSReadLineOption -PredictionViewStyle InlineView」 「Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward」 「Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward」 まず「Import-Module PSReadLine」は、PowerShellが起動するたびにPSReadLineモジュールを読み込むための命令である。これにより、PSReadLineの機能が利用可能になる。「Set-PSReadLineOption -PredictionSource History」は、入力補完(予測)の元となる情報を「過去のコマンド履歴」から取得するように設定する。これにより、以前に実行したコマンドを元にした候補が表示されるようになる。「Set-PSReadLineOption -PredictionViewStyle InlineView」は、予測候補の表示形式を「インラインビュー」に設定する。これは、入力中のコマンドの右側に薄いグレーの文字で候補が表示される形式で、Bashの操作感に近い。「Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward」と「Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward」は、上矢印キー(UpArrow)と下矢印キー(DownArrow)にそれぞれ特定の機能を割り当てる。上矢印キーを押すと、現在入力している文字に一致する過去のコマンドをさかのぼって検索し、下矢印キーを押すと、その検索結果を順に進んでいく。これらの設定をプロファイルファイルに貼り付けたら、ファイルを保存してメモ帳を閉じる。

設定を有効にするには、PowerShellのウィンドウをすべて一度閉じ、再度PowerShellを起動する必要がある。これは、プロファイルファイルに記述された設定がPowerShellの起動時にのみ読み込まれるためだ。Visual Studio Codeなどの統合開発環境のターミナルを使っている場合も同様に、ターミナルを閉じて再度開くことで設定が適用される。

設定が正しく適用されたかを確認するため、実際に機能をテストしてみよう。まず、いくつか適当なコマンドを実行し、PowerShellの履歴に保存させる。「echo test」や「Get-ChildItem」など、簡単なコマンドをいくつか試してみると良いだろう。その後、例えば「ec」と入力し、その状態で上矢印キーを押してみる。すると、「ec」で始まる過去のコマンドだけが候補として表示され、上矢印キーを押すたびにその候補が順に切り替わるはずだ。また、コマンドを入力中に、過去の履歴から予測されるコマンドが薄いグレーの文字でインライン表示されることがある。これはインラインサジェスト機能で、この候補を受け入れたい場合は右矢印キーまたはEndキーを押すと、自動的に残りの部分が補完される。この操作性は、Bashのユーザーにとって非常に馴染み深く、PowerShellでのコマンド入力が格段に効率的になることを実感できるだろう。

さらに、オプションとしてPSReadLineの表示形式や履歴サイズを調整することも可能である。もしインライン表示ではなく、候補がリスト形式で表示される方が好ましい場合は、プロファイルファイルに「Set-PSReadLineOption -PredictionViewStyle ListView」という行を追加する。これにより、コマンド入力中に候補がリストで表示されるようになる。また、PowerShellが記憶するコマンド履歴のデフォルトサイズは限られているが、「Set-PSReadLineOption -MaximumHistoryCount 10000」という行をプロファイルファイルに追加することで、履歴に保存されるコマンドの数を最大10,000件に増やすことができる。これにより、より多くの過去のコマンドにアクセスできるようになり、検索の範囲が広がる。これらのオプション設定もプロファイルファイルに追加し、PowerShellを再起動することで永続的に適用される。

もし設定がうまくいかないと感じた場合は、いくつかのトラブルシューティングを試すことができる。「Get-Module PSReadLine」というコマンドを実行すると、PSReadLineモジュールが正しく読み込まれているかを確認できる。また、「Get-PSReadLineOption」というコマンドで、PSReadLineの現在の設定を確認することが可能だ。特にPredictionSourceHistoryに、PredictionViewStyleが目的のスタイルに設定されているかを確認すると良い。多くの場合、設定が反映されない原因はPowerShellの再起動を忘れていることであるため、一度すべてのPowerShellウィンドウを閉じて再起動してみるのが最も手軽な解決策となる。

これらの設定を適用することで、PowerShellのコマンドライン操作は劇的に快適になる。Bashの便利な履歴検索とインラインサジェスト機能がPowerShellでも利用できるようになり、コマンドを打つ際のストレスが大幅に軽減され、日々の開発や運用作業の効率が向上することは間違いない。システムエンジニアとしての生産性を高めるためにも、ぜひこの設定を導入してほしい。

関連コンテンツ

関連IT用語