PowerShell と Bash: 知っておくべき主な違い

PowerShell と Bash: 知っておくべき主な違い

コンピューター上のターミナル エミュレーターに少しでも詳しい人なら、Linux の Bash や Microsoft の PowerShell について聞いたことがあるでしょう。これらは両方とも、どちらかのオペレーティング システムを専門とする専門家の生活の中に遍在しています。ただし、シェル プロンプトの前で日常生活を送っていない場合は、この 2 つがどのように比較されるかについてあまり考えたことがないでしょう。その場合、学ぶのに今ほど良い時期はありません。

PowerShellとは何ですか

Microsoft は、多用途で強力なスクリプト フレームワーク上で実行されるコマンド ライン インターフェイスとして機能する Powershell を 2006 年に導入しました。これは、Windows 管理者が「コマンドレット」 (正式には「コマンドレット」として知られています) を利用して作業の大部分を自動化する小さなアプリケーションを構築できるように設計されています。

Powershellbash リスト

さらに重要なことは、そのコマンド構造と「スクリプト機能」は、Windows が元々その上に構築されていた古い MS-DOS を完全に作り直したものであるということです。より統一された構文と情報の表示方法があり、慣れてコードを作成するのが簡単です。

これは、ほとんどの人が使い慣れている Windows コマンド ラインを置き換えることを目的としたものではなく、独自の自動化機能と構成機能でそれを補完するものです。たとえば、クラウド上の Microsoft Azure サービスを管理しようとしている場合、Connect-AzAccountリモート デスクトップ セッションを使用する代わりにコマンドを使用して管理できるようになりました。

Bash と同様、PowerShell は完全に監査可能であるため、システム内で発生するすべてのことを把握することが重要な非常に機密性の高い環境での使用が可能です。

バッシュとは

Bash は 1989 年に誕生した祖父であり、それを覆い隠そうとするあらゆる高性能シェルに関係なく、Linux 環境内で存在し続けています。PowerShell と同様に、Bash は、管理をより簡単に自動化するためのスクリプトを作成するためのフレームワークを提供します。

Powershellbash バッシュ

そのコマンド構造と構文はさまざまな Linux ディストリビューション、BSD、さらには macOS の間で広く普及しているため、多くの開発者はプロジェクトを整理するための頼りになるものとして Bash を使用することに慣れてきました。

Bash には、スクリプトを作成し、端末を介して情報を中継できるようにする基本的な操作スイートが含まれていますが、このシェルを使用して端末に入力するほとんどすべてのコマンドは別個のプログラムです。たとえば、Bash にはls(ファイルの一覧表示) またはcat(連結、またはファイルの出力の表示) コマンドは含まれていませんが、代わりに、指定されたパス内で同じ名前の実行可能ファイルを検索します。

Powershell と Bash: 違い

PowerShell と Bash は、最初に使用方法を学んだときは似ているように見えるかもしれませんが、本質的にはまったく異なるものであり、設計哲学が時には衝突することがあります。それらを区別する非常に重要な点をいくつか紹介します。

1. ユーザーアクセス制御

Bash で何か管理的なことをしたい場合は、コマンドの前に sudo を付けるだけです。コマンドが完了すると、すぐにユーザー シェルに戻ります。root コマンドを実行すると、エラーが発生する余地が少なくなり、実行内容を確認する必要が生じます。

一方、PowerShell は管理モードまたはユーザー モードでのみ実行できます。それらを切り替える場合は、新しいセッションを開く必要があります。PowerShell を管理モードで開くには、プログラム アイコンを右クリックし、[管理者として実行] をクリックする必要があります。あるいは、1 つのターミナル セッション内で入力するだけで、Start-Process powershell -verb runAs管理者権限を持つ 2 番目のセッションが開かれます。

2. 出力

Bash でコマンドを入力すると、基本的には別のプログラムが実行され、その実行可能ファイルによって必要な結果が得られます。出力がどのようにフォーマットされるかは、その特定のプログラムの開発者が出力をどのようにフォーマットしたいかによって異なります。

柔軟性が非常に高いのは素晴らしいことですが、欠点は均一性に欠けることです。

PowerShell のコマンド出力は通常、1 つの統一標準に基づいて形式化されます。画面に表示されるテキストは、人間が判読できるバージョンのデータであり、他のプログラムで解釈できます。

これにより、スクリプトやアプリケーションを作成する人は、PowerShell 独自の機能とコマンドを使用するだけで、必要な情報をすべて取得できるようになります。

3. 構文

if [condition]; then code here; fiBash は、他のスクリプト言語では通常見られない非常にユニークな構文 (例: ) を使用します。使用するのはそれほど難しくありませんが、スクリプトの書き方を学び始めたばかりの人にとっては少し型破りかもしれません。

ユーザーコマンドに関しては、明確な統一性はありません。すべてのプログラムには独自のコマンド構文が付属しています。それらを bash スクリプトに統合する前に、それらの使用方法を知っておく必要があります。

PowerShell のスクリプト構文は他のスクリプト構文と似ています。NET アプリケーション (例: if (condition) {. ..code here... })。Microsoft 独自のエコシステム内での開発に慣れている人にとっては、学習曲線はほとんど必要ありません。

ユーザーコマンドは、動詞、ダッシュ、名詞という厳格な構造に従います。たとえば、Get-ChildItem現在のディレクトリ内のすべてのファイルが一覧表示されます。PowerShell に固有ではないコマンドも、Bash と同様の構造に従うことができます。Linux で使用している場合でも、すべての Linux コマンドを実行できます。

4: 柔軟性

Bash をマスターすれば、無数の Linux ディストリビューションのターミナル環境、BSD エコシステム、さらには macOS での操作方法がわかるようになります。それはまさに普遍性の王様です。macOS は 2019 年にzshに切り替わりましたが、依然として Bash の精神が中核にあります。

PowerShell は事実上あらゆるオペレーティング システム内で実行できますが、主に Microsoft 独自の製品と並行して実行することを目的としています。これを使用している場合は、Windows 内で使用している可能性が高くなります。

PowerShell 固有の規則だけを学習している場合は、基本的に Microsoft 製品の存在する孤島に閉じ込められることになります。そうである必要はありませんが、シェルが真に輝くのはその状況でのみであるという事実から逃れることはできません。しかし、マイナス面に関して言えば、それは世界のデスクトップ市場シェアの大きな部分を伴うものです。

よくある質問

Windows 内で bash を実行し、Linux 内で PowerShell を実行できますか?

Windows 内で bash を実行するには、管理者としてコマンド プロンプトを実行し、「 」と入力して、Linux 用 Windows サブシステムwsl --installをインストールするだけです。インストールが完了すると、bash コマンドにすぐにアクセスできるようになります。

Linux 内の PowerShell は少し複雑で、ディストリビューションに依存します。Microsoftの Web サイトには、最も一般的なディストリビューションに PowerShell をインストールする手順が記載されています。Arch Linux がリストにないことに気づくかもしれませんが、powershellAUR にはパッケージとして存在します。

Windows には Bash が必要ですか?

必ずしもそうとは限りませんが、Linux 向けに設計されたもの (Python、Git など) を使用する予定がある場合は、非常に役立ちます。そばに置いておいても損はありません。Linux 用 Windows サブシステムを使用して Bash をインストールすると、完全な Linux シェルを試すこともできます。これは、不慣れな場合にオペレーティング環境を理解するのに最適な方法です。

Windows DOS コマンドは PowerShell で機能しますか?

彼らは一般的にそうします。PowerShell は、元の Windows コマンド プロンプトに代わるものではありません。代わりに、その上で動作して新しい機能を提供するレイヤーです。実績のある cmd.exe の代わりに PowerShell を使用すれば、おそらく何も見逃すことはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です