PowerShellやWindowsTerminalの違い(というか関連性)について
こんにちは!開発環境をwindowsに徐々に移行中のMizutani(@sirycity)です。macは1.3kgあって重い。そんなお爺ちゃんみたいな理由で変えるんか。
今日は普段macを使ってる人がwindowsのシェルとターミナルを設定したらだいぶ混乱したって話です。PowerShellやWindowsTerminalなど色々なアプリがあってそれぞれの関連性が全然分からなかったので、自分用のメモも兼ねて記事にしたいと思います。
はじめに
シェルとターミナルについてですが、シェルはプログラミング言語、ターミナルはエディタと考えると分かりやすいと思います。
macのシェルとターミナル
最近のmacだと初期状態ではシェルはzsh、ターミナルはターミナルになっています。実にシンプルで分かりやすいですね!もちろん他のやつを使うこともできます。シェルはfish、ターミナルはiterm2とかhyperに変えている人は時々いますね。
windowsのシェルとターミナル
windowsのシェルとターミナルはmacに比べると分かりにくいです。まずは最初から入っているシェルを見ていきましょう。2種類あります(表記を一部変更)。
- コマンドプロンプト
- WindowsPowerShell
次に最初から入っているターミナルを見ていきましょう。
- コマンドプロンプトに付いてくるターミナル
- WindowsPowerShellに付いてくるターミナル
…見ての通り、windowsはシェルにはターミナルを同梱する思想のようです。密結合になる反面、使い始めるまでが早いとか分かりやすいとかのメリットもあるので一長一短ですね。ちなみにこのターミナル、正式名称はWindows コンソールホストだそうです。
PowerShellとは
PowerShellはシェルの一種です。
PowerShellで大事なのはWindowsPowerShellとは別物ってことです。簡単に違いを書くと、WindowPowerShellは
- 古い方
- バージョン5まである
- windowsに最初から入ってる
- windowsでしか動かない
- 水色のアイコン
のに対し、PowerShellは
- 新しい方
- バージョン7からある
- windowsに最初からは入ってない
- macやlinuxでも動く
- 黒のアイコン
といった点が異なります。そして、例によってPowerShellにもターミナルが付いてきます。
windowsで最初にPowerShellを開こうとすると古い方が開いて、新しいの使ってみて! みたいなお誘いが来るのでMicrosoftStoreからダウンロードしましょう。
WindowsTerminalとは
WindowsTerminalとはwindowsのターミナルです。…まんまじゃんって?いえいえ、上述の通りターミナルはシェルに合体してくるものであったwindowsにおいて純粋なターミナルをmicrosoftが出したというのが破天荒なわけです。実際に使ってみると分かりますが、シェルの付属品たちと違ってWindowsTerminalはUIがめっちゃきれいです。あと細かい設定がしやすい。全体的にモダンです。スゴイぞ、モダンPC!
あと、当たり前ですがターミナルなのでこいつからPowerShellとかコマンドプロンプトを開けます。こういう動きはwindowsをずっと使ってきた人にとっては逆に変な感じするかも。
WindowsTerminalも最初からは入っていません。MicrosoftStoreからダウンロードしてね。
シェルとターミナルの密結合について
ちなみにwindowsではシェルとターミナルが密結合になっているケースは他にも結構あります。例えばGitBashなんかは普通にインストールするとGitとBashとそいつらに付いてくるターミナルの3種がドサッと用意されるというトンデモ密結合です。あとはWSL2のディストリビューションにもターミナルが用意されています。勿論これが悪いってわけじゃないけどね。
勿論そいつらはWindowsTerminalから開くことができます。開発者の視点で見ると任意のシェルをWindowsTerminalから開くってのが一番良い形なんじゃないでしょうかね。
さいごに
理解するポイントは3つ!
- windows、シェルにターミナルを同梱しがち
- WindowsTerminalだけが公式の純粋なターミナル
- PowerShellは2種類ある
以上!windowsでもたのしくプログラミング、しよう!