CentOSとUbuntuと互換性のあるbashスクリプトを書く方法についてのガイドはありますか?

CentOSとUbuntuと互換性のあるbashスクリプトを書く方法についてのガイドはありますか?

ここではシナリオを簡素化します。

一連のbashスクリプトを作成し、Ubuntuでテストしました。

私のスクリプト(bash構文)がCentOでも同じように動作することを確認したいと思います。

CentOSとUbuntuと互換性のあるbashスクリプトを書く方法についてのガイドはありますか?

それとも、より良い点は、Linuxプラットフォーム全体でbashスクリプトを生成する方法を説明するガイドがありますか?

アップデートと説明

@CMのコメントに関して、bashがどのように機能するか尋ねません。 bashソルバーのコードベースがLinuxディストリビューションによって異なるかどうかを尋ねたいと思います。

たとえば、Python 3のコードベースのほとんどは複数のプラットフォームで同じで、同じように動作します。私の経験では、Pythonコードは非常に実用的です。他の多くのインタプリタのNode.jsコードにも同じことが当てはまります。

しかし、Bashが同じ移植性から利益を得ることができるかどうかはわかりません。私は間違っているかもしれませんが、私にとっては、BashがLinuxディストリビューションに統合されているようです。私は正しいですか?ほとんどのLinuxディストリビューションは、同じソースコードリポジトリを使用してBashをコンパイルしてデプロイしますか?

答え1

質問のデフォルトの前提が変更されました。(「bashあるディストリビューションで作成されたスクリプトを別のディストリビューションで実行できますか?」から)しかし、答えの要旨は同じままです。元の答えは本質的にこの答えの結論に残ります。

bashソルバーのコードベースがLinuxディストリビューションによって異なるかどうかを尋ねたいと思います。

.bashrcいいえ、処理方法は少し変わりましたが同じです。ソースbashはGPLです。 Linuxディストリビューターが変更されたバージョンをデプロイする場合は、bash変更されたソースコードも通常のバージョンとチェックして比較できる必要があります。

私のスクリプト(bash構文)がCentOSで動作することを確認したいと思います。

これシェルコマンド構文bash同じバージョンを考えるとbash

たとえば、Python 3のコードベースのほとんどは複数のプラットフォームで同じで、同じように動作します。

これは良いたとえ話です。同じ(または同様の)バージョンのPythonと、インストールされているライブラリとユーティリティで動作する同じPythonコードにも当てはまりますbash

私は間違っているかもしれませんが、私にとっては、BashがLinuxディストリビューションに統合されているようです。私は正しいですか?

あなたが疑うことを示唆しているので、あなたは本当に間違っていました。デフォルトでインストールすることも、そうでない場合もあることを除いて、bash他のツール(たとえば、lsまたは)よりもjq「内部的に統合」することはありません。rsyncbashjq

CentOSとUbuntuと互換性のあるbashスクリプトを書く方法についてのガイドはありますか?

ああ、それはあなたの多面的な質問の要点のようです。

おそらく多くのガイドがあります。ただし、この特定の質問に実際に意味のある答えを提供するために作成しているスクリプトの種類に関する詳細は不十分です。 bashただし、スクリプト自体は、スクリプトがあるディストリビューションでは機能しますが、別のディストリビューションでは機能しない方法を決定する主な要素ではありません。

bashbashスクリプト自体は、インストールされているすべてのディストリビューションで完全に実行されます。最高の互換性を得るには、各ホストに同じ(または近い)バージョンをインストールする必要がありますbash。たとえば、スクリプトがバージョン4で導入された機能を利用している場合、bashv3とv4の間のスクリプトによっては、いくつかのマイナーな問題が発生する可能性があります。互換性の問題bashbash

しかし、外部ユーティリティが存在しないか、異なる動作をする可能性があります。

たとえば、スクリプトがある場合Ubuntu / Debian用に書かれました.debパッケージ管理を処理するように設計されており、パッケージマネージャを期待して使用するように作成されています。たとえば、パッケージマネージャをapt使用するRed Hat派生システムでは、これらのツールが存在または機能する可能性はありません。しかし、それが動作する環境の結果。.rpmyumbash

関連情報