【macOSで PowerShell Core】バージョン6.2 をインストールして色々試す
はじめに
コンサルティング部の川原です。
支給された Mac に PowerShell Core 6.2 を入れました。 入れた理由は、前職で PowerShellを愛用していたからです。
環境は下記の通りです。
- OS: macOS Mojave, version 10.14.5
- 導入したPowerShell Core: version 6.2.1
インストール・起動
Microsoft: macOS への PowerShell Core のインストール 通りに進めます。 Homebrew が必要です。
シェル上で 下記コマンドを実行します。 PowerShell がインストールされます。
brew cask install powershell
シェル上で pwsh
と打つと PowerShell が起動します。
お馴染みのコマンドレットもちゃんと実行できますね。
また Launchpad にアプリケーションが登録されるので、 そこからPowerShell 起動も可能です。
スクリプト実行
PowerShellスクリプト (ps1 拡張子) を実行してみます。
問題なく実行できました。
Windowsマシンの場合は デフォルトでスクリプトが実行できないポリシー( Restricted ) となっており、
Set-ExecutionPolicy
コマンドレットを実行してポリシーを変更する必要がありました。
が、非Windowsマシンはデフォルトの実行ポリシーは Unrestricted なので、特に対応不要で実行できるみたいです。
On non-Windows computers, the default execution policy is Unrestricted and cannot be changed.
Microsoft: About Execution Policies より引用
エイリアス
Get-Alias
コマンドレットで登録されているエイリアス一覧を取得できます。
Set-Alias
コマンドレットで自分で新規エイリアスを登録することができます。
Windows版 PowerShell では よく使われる Linux コマンド名 (ls
, cat
など) が
デフォルトのエイリアス設定に入っています。
ls -> Get-ChildItem
cat -> Get-Content
など
が、Mac, Linux 版PowerShell では衝突を回避する目的でそれらのエイリアス設定が入っていません。
ls
を実行すると bash の ls
が実行されます。
( 参考: Microsoft "Getting Started with PowerShell Core on Windows, Mac, and Linux" )
実際に Mac版 PowerShell Core と 自宅PCの Windows版 PowerShell Core のエイリアスを 比較してみました。 下記エイリアスは Windowsにはありましたが、 Mac にはありません。
ac -> Add-Content cat -> Get-Content clear -> Clear-Host cnsn -> Connect-PSSession compare -> Compare-Object cp -> Copy-Item cpp -> Copy-ItemProperty diff -> Compare-Object dnsn -> Disconnect-PSSession gin -> Get-ComputerInfo gsv -> Get-Service ls -> Get-ChildItem man -> help mount -> New-PSDrive mv -> Move-Item ps -> Get-Process rm -> Remove-Item rmdir -> Remove-Item sasv -> Start-Service sleep -> Start-Sleep sort -> Sort-Object spsv -> Stop-Service start -> Start-Process stz -> Set-TimeZone tee -> Tee-Object write -> Write-Output
プロファイル
PowerShell のプロファイルは bash でいう .bash_profile
にあたります。
PowerShell 開始時に動作するスクリプトです。
このスクリプトのパスは $PROFILE
変数に格納されています。
Linux/macOS のプロファイルパスは ~/.config/powershell/profile.ps1
となっています。
例えば、下記内容を $PROFILE
に登録すると、PowerShell 起動時に
プロンプト表示が 「ディレクトリ名のみ」となります。
# プロンプト表示をディレクトリ名のみにする function global:prompt { return (($pwd.Path -split '/')[-1] + ">") }
必要に応じて $PROFILE
に 他エイリアス設定などを入れます。
さいごに (活用など
以上、PowerShell Core のインストールでした。
Windows PowerShell を愛用していた方は、 Linux/Mac でも PowerShellを使ってみてはいかがでしょうか。 今のところ不便なく使えています。
PowerShell のオブジェクトをパイプで渡す概念が新鮮で私は好きです。 また、個人的には CSV,JSON,XML などのデータファイルを扱うときに便利だと感じています。 下記のように簡単にインポートできます。
# CSVファイル インポート $csv = Import-Csv ./sample.csv # CSVファイル インポート (上と同じ) $csv = Get-Content ./sample.csv | ConvertFrom-Csv # JSONファイル インポート $json = Get-Content ./sample.json | ConvertFrom-Json # XMLファイル インポート $xml = [xml] (Get-Content ./sample.xml)