前置き
普通に Linux で PowerShell を動かしても面白くないので、LXC にインストールしてみました。(簡単に消せるし)
フルのディストリビューションより LXC のほうが小規模 (デフォルトのライブラリが多くない) なので、
ちょーーっとだけハードルが高いのです。
LXC は予め構築しておいてください。
Linux 版 PowerShell 公式の説明はココです。
なお、Linux 版にバージョン 5.1 はありません。(Windows10/11 のデフォルトは 5.1)
なので、Linux 版と Windows 版を同じバージョンにするには Windows 側を変更する必要があります。
Linux で PowerShell を動かしたい人なんて、そうはいないと思うけどまぁどうぞ。
1. PowerShell のインストール
1-1. PowerShell のパッケージをダウンロードしておく
$ wget https://github.com/PowerShell/PowerShell/releases/download/v7.4.6/powershell-7.4.6-1.rh.x86_64.rpm1-2. ICU (ユニコードとローカライゼーションのライブラリ) をインストール
$ ls -ogh powershell-7.4.6-1.rh.x86_64.rpm
公式で github.com なのかぁ。自社製品の頒布サイト名を自社ブランドにしないのは Linux 向けだから?
-rw-r--r--. 1 68M Oct 22 22:10 powershell-7.4.6-1.rh.x86_64.rpm
バージョンは 7.4.6 で、2024-10-22 に作成されたもの。
ファイルサイズは 68MB だけど展開すると 176MB になる。
$ su1-3. PowerShell をインストール
# dnf install -y libicu
# dnf install -y powershell-7.4.6-1.rh.x86_64.rpm
削除するときは普通に dnf remove powershell をすればいい。
# exit
$ ls -ogh `which pwsh`
$ ls -ogh /opt/microsoft/powershell/7/pwsh
lrwxrwxrwx. 1 32 Oct 16 16:51 /usr/bin/pwsh -> /opt/microsoft/powershell/7/pwsh
$ du -sh /opt/microsoft/powershell/7/
-rwxr-xr-x. 1 71K Oct 16 16:50 /opt/microsoft/powershell/7/pwsh
176M /opt/microsoft/powershell/7/
2. 使ってみる
$ pwsh
ディレクトリ表示の確認
Windows のターミナルとは表示が異なる。
PowerShell 7.4.6 PS /home/admin> dir ⏎ Directory: /home/admin UnixMode User Group LastWriteTime Size Name -------- ---- ----- ------------- ---- ---- -rw-r--r-- admin admin 10/22/2024 22:10 71262521 powershell-7.4.6 -1.rh.x86_64.rpm PS /home/admin> exit ⏎
$ echo 漢字は表示できますか? > utf8.txt
$ cat utf8.txt | nkf -s > sjis.txt
$ pwsh
漢字表示の確認
たぶん、使っている端末ソフトの調整をサボっているせい。
PowerShell 7.4.6 PS /home/admin> Get-Content ./utf8.txt ⏎ 漢字は表示できますか? PS /home/admin> Get-Content ./sjis.txt ⏎ ���� �͕\���ł��܂����H ← 文字化け PS /home/admin> exit ⏎
きっと内部ではうまいことやってくれるだろう。深く考えないことにする。
$ pwsh
Start-Sleep の挙動の確認
バージョン 5.1 (Windows のデフォルト) だと瞬時に終了する)
PowerShell 7.4.6 PS /home/admin> for ( $i = 0 ; $i -lt 50 ; $i ++ ) { Start-Sleep 0.1 } ; Write-Output "Done" ⏎ … 5 秒経過 … Done PS /home/admin> exit ⏎