私たちはLinuxシステム用のスクリプトを書いており、現在最も一般的なLinux用のスクリプト言語が何であるかについていくつかの議論があります。バッシュ、SH、Poixix?何?
ベストアンサー1
すべてのUNIXシリーズオペレーティングシステムには2つのTuring-completeプログラミング環境があり、他のプログラムを呼び出すことができます。アッとシェン、Bourne/POSIXシェルシリーズ。 AWKはテキスト処理(より専門的なユーティリティを補完する)に向けられていますが、shはプログラムを1つにまとめる接着剤言語を指します。何ですかこれLinux および UNIX 世界の汎用スクリプト言語です。
これPOSIX標準は、sh 自体および関連ユーティリティの必須機能を定義します。ほとんどのUNIXシリーズシステムは次のとおりです。POSIX 1003.1-2004(別名Single Unix v3、別名Open Group Base Spec Issue 6)この規格の最新バージョンは次のとおりです。POSIX 1003.1-2008(別名Single Unix v4、別名Open Groupの基本仕様の問題7)。
すべてのLinuxおよびunixまたはUnixファミリーシステムにはパスにBourneスタイルのシェルがあり/bin/sh
、アンティーク以外のシステムにはPOSIX互換シェルがあります(断続的なバグを除く)。すべての最新のUNIXシリーズシステム(Linuxを含む)でサポートされています。彼女の心が飛んだしたがって、/bin/sh
最初の行がある場合は自動的にスクリプトが実行されます#!/bin/sh
。一部のPOSIXシステムは、sh
他の場所(通常はUnixとは思わないオペレーティングシステムの一番上のエミュレーション層)にあります。
組み込みLinuxシステムにはライトバージョンがある可能性があります。忙しい箱すべてのPOSIX機能を実装していないシステム。 BusyBoxには、小規模なシステムに適応できる多数のコンパイル時間オプションがあるため、何が起こるのかを事前に知ることが難しく、特定のデバイスに合わせてスクリプトを調整する必要があります。 BusyBoxは、shおよびさまざまなユーティリティの最も一般的な小規模な実装です。発生する可能性があるもう1つの問題は、Androidのシェル環境が非常に単純化されることです(以降のバージョンはもはや無菌状態ではありません)。
非埋め込みLinuxシステムはほぼ常にスプリントまたは強く打つのように/bin/sh
。 Dashは、POSIX機能のみを実装する小型で高速なシェルです。 Bashは、より多くの機能を備えたより大きなシェルです。
非組み込みLinuxシステムには、ほとんど常にBashがインストールされています/bin/bash
。したがって、非埋め込みLinuxシステムでの移植性のためにbashを使用できると仮定できます。 Bashの便利な追加機能には、配列、ドットファイルで便利に機能する機能、pipestatus
パイプライン内のすべてのコマンドの戻り状態を取得する変数、ファイル時間の追加比較演算子、および(最新バージョンの場合)正規表現の一致が含まれます。
シェルプログラミングの特徴の1つは、プログラムだけを使用するのではなく、sh
さまざまなプログラムを使用することです。便利。 Linuxのほとんどのファイル操作とテキスト処理ユーティリティは、GNUコアツール(組み込みシステムでは通常BusyBoxで提供されます。)
Linux 以上の移植性が必要な場合、最良のオプションは POSIX を使用することです。他のUnixバリアントにはbashがインストールされていない可能性があります(bashはOSXの標準インストールの一部ですが、* BSDおよびほとんどの商用Unixではオプションのパッケージです)。 Linux および OSX (*BSD や商用 Unix など) を除く、ほぼすべての Unix バリアントには次のバージョンがあります。コーエンシェル、少なくともPDKSH。 Bashへの多くの便利な拡張はkshで提供されているので、両方で実行できるスクリプトを書くと便利ですが、未知のシステムでbashまたはkshがどこにあるかを検出するのは少し面倒です。
シェルがすべてを行うことはできません。より複雑な言語が必要な場合、最も一般的な2つの選択肢はPerlとPythonです(他のすべての言語はUNIXスクリプト言語よりはるかに劣ります)。 Perlは組み込みのLinuxシステムにはほとんどない伝統的なスクリプト言語ですが、Pythonが進んでいます(部分的にはUbuntuの推奨スクリプト言語になります)。 Linux以外の環境では、PerlはOSXとOpenBSDの基本インストールの一部です。これはオプションですが、通常 FreeBSD にインストールされ、オプションですが、通常は NetBSD にインストールされます。