PowerShellで手軽にUnix風にaliasを使う
WSL2やDockerの登場により、Windowsを用いて開発を行うという機会は今まで以上に増えてきていると感じます。それに伴ってPowerShellを使用する機会も増えている一方で、どうしてもUnixとのコマンドの使い方に戸惑ってしまったり、不便を感じてしまったりすることがあると思います。私もその1人です。
本記事では数あるコマンドの中でもaliasに焦点を当てて、Set-Aliasとfunctionを活用してUnix風に使用する方法を解説します。
Unix:
Unixでは以下のようにscriptを実行することによってaliasを設定できるかと思います。今回は、これと同じことをPowerShellでできるようにしたいと思います。
# source alias.sh
# alias.sh
alias bundle='docker-compose exec app bundle'
alias rubocop='docker-compose exec app bundle exec rubocop'
alias rspec='docker-compose exec app bundle exec rspec'
alias rails='docker-compose exec app bundle exec rails'
PowerShell:
方法はシンプルでタイトルにある通り、Set-Aliasに加えてfunctionを使用するだけです。
> . .\alias.ps1
# alias.ps1
function bundle-command { docker-compose exec app bundle $args }
Set-Alias -Name bundle -Value bundle-command
function bundle-exec-rubocop { docker-compose exec app bundle exec rubocop $args }
Set-Alias -Name rubocop -Value bundle-exec-rubocop
function bundle-exec-rspec { docker-compose exec app bundle exec rspec $args }
Set-Alias -Name rspec -Value bundle-exec-rspec
function bundle-exec-rails { docker-compose exec app bundle exec rails $args }
Set-Alias -Name rails -Value bundle-exec-rails
.\alias.ps1を実行する際に先頭に.を置く理由は、現在のスコープでスクリプトを実行するためです。先頭に置かなかった場合は、新しいスコープ内でスクリプトが実行されるため、aliasを設定することができません。
. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\file-to-path\alias.ps1 を
読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170)
を参照してください。
発生場所 行:1 文字:3
+ . .\alias.ps1
+ ~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
上記のようなエラーが出た際は、以下のコマンドを管理者権限で実行すると、スクリプトの実行ができるようになります。> Set-ExecutionPolicy RemoteSigned