他のすべてのLinuxディストリビューションには同じコマンドラインがありますか? [閉鎖]

他のすべてのLinuxディストリビューションには同じコマンドラインがありますか? [閉鎖]

他のすべてのLinuxディストリビューションには同じコマンドラインがありますか?質問は、同じコマンドラインがさまざまなLinuxディストリビューション(CentOS、Fedora、Ubuntuなど)に適用されるのか、それとも別のコマンドラインを持っているのか疑問に思います。

答え1

私はこの質問をさまざまなLinuxディストリビューションでのコマンドとシェルの移植性に関する質問と解釈することにしました。 「コマンドライン」は、「シェルプロンプトで作成されたコマンド」と「シェル自体」を意味できます。この答えで、「コマンドライン」の両方の解釈が解決されることを願っています。


ほとんどのUnixシステムは、シェルプロンプトで作業するための同じ基本ユーティリティを提供します。これらのユーティリティは標準化されており、基本的にはすべて同じ方法で動作します。また、シェルコマンドを作成するための構文が標準化されています(ループ、リダイレクト、パイプ、バックグラウンドプロセス、変数の割り当て、参照など)。標準はPOSIXと呼ばれ、ここで見つけることができます(「シェルとユーティリティ」セクションを参照)

ほとんどのUnices(特にLinuxでは何らかの理由で)では、標準ユーティリティはアドオンに拡張されていますが、POSIX標準で説明されている機能は次のとおりです。しなければならない実装されます。標準ユーティリティがPOSIXと互換性がない場合は、そのためのバグレポートを送信する必要があります。

特に、シェル自体は、より便利なインタラクティブな経験を提供するため、またはより高度なシェルプログラミング機能を提供するために拡張されることがよくあります。シェルは他のアプリケーションと同様にさまざまな形式(実装)で提供され、bashLinuxシステムで最も広く使用されています(macOSなどのシステムではデフォルトのシェルとして機能し、すべてのUnixにインストールできます)。zshShellとShellkshも広く使用されており、さまざまな拡張機能セットを提供していますが、両方少なくともPOSIX標準で言われているほとんどの操作は、共通の構文を使用して実行できます(特別なタイプの配列やよりエキゾチックな形式のファイル名パターンのマッチングなどの拡張を使用しない限り、これらのいくつかはシェル間でも非常に似ています) 。

POSIX標準で扱われていない特定のタスク(データベースとの通信やモニターの明るさレベルの調整など)を実行するためのツール、または特定のLinuxディストリビューションに固有のツール(おそらくパッケージ用)などの非標準ツールの場合は管理)、特定のLinux展開バージョン、特定のハードウェアアーキテクチャなどの場合、コマンドの移植性は、コマンドの使用をサポートするシステムにインストールされているツールの正しいバリエーションとバージョンによって異なります。

利用可能なさまざまなツールとユーティリティは、Linuxディストリビューション全体でかなり同じであり、移植性は一般的です(ただし、ディストリビューションとアーキテクチャ固有のツールは異なるか欠落している可能性があることに注意してください)。他の種類のUnixシステムで実行する必要があるスクリプトを使用して作成することを考えると、GNU / Linuxツールとユーティリティのバリエーションに固有の拡張機能は何ですか?してください。

答え2

Linuxはオペレーティングシステムではなくカーネルにすぎません。コマンド、GUIプログラム、美しいデスクトップなど、直接使用するものは、カーネルが提供するのではなく、オペレーティングシステムと共に配布されるユーザーレベルのコンポーネントによって提供されます。

シェルで使用されるコマンドは、シェルの組み込みまたは外部パッケージで提供されます。インストールしたソフトウェアによって、同じ場合も異なる場合もあります。常にシェルでコマンドを使用しますが、実際にはシェルとはほとんど関係ありません(これはWindows / OS X / * BSDにも適用されます)。シェルがどのように機能するかを理解してください。

一部のディストリビューションでは、デフォルトでいくつかの共通ソフトウェアをインストールするため、いくつかの共通コマンドを使用できます。ほとんどすべてのディストリビューションにソフトウェアがインストールされているlsため、ほぼすべてのディストリビューションで使用できます。linux-utils

一部のディストリビューションでは、必要なパッケージをより自由に選択できます。この場合、このコマンドを提供できるソフトウェアやインストールを拒否すると、そのlsパッケージを使用できない場合があります。linux-utilsまた、異なるパッケージが同じ名前のコマンドを提供している場合、互いに競合する可能性があることに注意してください。

答え3

コマンドラインの解釈方法は次のように異なります。シェル実行中のプログラムと呼び出されたプログラムが引数を解釈する方法です。

さまざまなシェルがあり、あるシェルの特定の機能を使用するコマンドラインが他のシェルでは機能しない可能性があります。

つまり、通常、さまざまなLinuxディストリビューションには少なくとも同じ基本シェルが含まれているため、同じシェルを実行できる場合は同じコマンドラインを使用できます。 (これがシェルスクリプトで通常必要なシェルを最初の行に入れる理由です。)

編集する

以前のシェルスクリプトを見てください/etc/init.d。各スクリプトは次から始まります。

#!/bin/sh

したがって、これにはDebian byのような一種の標準シェルが必要ですdash。比較のために、私は次のシェルスクリプトを書いています。

#!/bin/bash

場合によっては拡張機能を使用するためですbash。他の殻もたくさんあります。ここ

関連情報