このページの本文へ

FIXER cloud.config Tech Blog

PowerShellを“いい子”に改造して、WSLから“推し変”した

2021年02月26日 11時00分更新

文● 三上 柊悟/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「PowerShellを”いい子”にして、WSLから”推し変”した」を再編集したものです。

 WSLを使ってCドライブ上のファイルを実行するとどうしても遅くなってしまうことを知り、PowerShellに”推し変”しようと決意しました。とはいえ、デフォルトのPowerShellは個人的には使いづらく感じてしまい推せる気がしなかったので、PowerShellを自分好みの”いい子”にして推す方法を選びました。

想定している対象読者

・WSLと最近うまくいっていない方
・PowerShellと仲良くなれない方
・PowerShellと仲は良いけど、もっと仲良くなりたい方

とりあえず環境構築

1.Windows Terminalのインストール

 インストールはこちらから

2.必要なフォントのインストール

 こちらからCascadia Code PLまたはCascadia Mono PLをインストールして、Windows Terminalのフォントとして設定する必要があります。設定はWindows Terminalを起動して「⋁」の部分をクリックした後、「設定」をクリックするとエディタが起動するのでこちらから設定します。

3.下記コマンドをPowerShellで実行


Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')  # scoop のインストール
scoop install git # git のインストール
scoop install gsudo # gsudo のインストール
scoop install vim   # vim のインストール

# PowerLineのインストール
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck

4.$PROFILE.CurrentUserAllHosts(おそらくC:\Users\{{ ユーザー名 }}\Documents\WindowsPowerShell\profile.ps1)に下記を追記


# Ctrl + d で Exit
Import-Module PSReadLine
Set-PSReadlineKeyHandler -Key ctrl+d -Function DeleteCharOrExit

# bash風のtab補完
Set-PSReadLineKeyHandler -Key Tab -Function Complete

# PowerShellでPowerLineを適用するための設定
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

5.Windows Terminalを起動or再起動

PowerShell再起動後、”このシステムではスクリプトの実行が無効になっているため、…”と出る場合

 自分はWindows Terminal起動後に下記のエラーが出ました。


. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\{{ ユーザー名 }}\Documents\WindowsPowerShell\profile.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\{{ ユーザー名 }}\Documents\WindowsPowerShell\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

 これはPowerShellの実行ポリシーに起因するエラーらしいです。(詳しく知りたい人はググって下さい…)

 実行ポリシーを変更することで解決するので、下記コマンドを実行しました。


gsudo PowerShell Set-ExecutionPolicy RemoteSigned

インストールしたツールの紹介

Windows Terminal

 タブを複製でき、PowerShellは勿論のこと、コマンドプロンプトもWSLも扱える便利な便利なターミナルソフト。UIも良くて好き。

 Ctrl+tabでタブ移動、Ctrl+Shift+Tで新規タブを開く、といったキーボードショートカットもあって優秀。

gsudo

 管理者権限でコマンドを実行するコマンド。UNIXのコマンドでいうsudosuを混ぜた感じ。使い方は下記。


gsudo   # sudo su と同等
gsudo {{ コマンド }}   # sudo {{ コマンド }} と同等

vim

 言わずと知れたエディタ。管理者権限でファイルをいじるときに、CLIで使えるエディタがあると便利だと思ったのでインストール。emacsやほかのエディタでもいいと思うけど、僕はvim派なのでvimをインストールしました。

 ちなみに.vimrc$VIM(おそらくC:\Users\{{ ユーザー名 }}\)配下に格納すれば設定が反映されます。

PowerLine

 ターミナルの表示をかっちょよくするやつ。実際に入れると下記画像みたいにディレクトリ・gitのブランチを表示して、改行されたところからコマンドを打つ感じになります。

設定した内容の紹介

Ctrl+dでExit

 ExitできるキーバインドがあるとPowershell終了するときやgsudoで管理者権限になった後に抜けるときにも便利だと思ったので設定しました。Ctrl+dなのはLinux系でこのキーバインドだからです。

bash風tab補完

 PowerShellのtab補完が苦手なのでbash風のtab補完にしました。ここは慣れてる補完を使ったほうが良いと思うので、好みに合わせたほうが良いと思います。ちなみにzsh風にするには下記のように記載します。


# zsh風のtab補完
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete

蛇足

 人生で初めて推し変をして、下2つのことを痛感しました。

・推し変するに至るまでには色々な葛藤がある
・未練があると推し変をした後でも推しのことを考えてしまう

 こんな思いはもう2度としたくないので、推し変するかもしれないような存在を推すことはせず、今の推しを全力で推そうと改めて思いました。

 三上 柊悟/FIXER

 cloud.config Div所属の三上 柊悟です。好きな食べ物はメロンパンです。

[転載元]
 PowerShellを”いい子”にして、WSLから”推し変”した

カテゴリートップへ