Bashスクリプトの実行可能ファイルとライブラリ

Bashスクリプトの実行可能ファイルとライブラリ

すべて読んだときGoogleのシェルスタイルガイド、私は少し混乱している次の行を見つけました。 「実行ファイルには拡張子を含めないでください(強くお勧めします)。または.sh拡張子が必要です。ライブラリには.sh拡張子が必要です。実行可能ではありません。」協会少なくともbashスクリプトの場合、実行可能ファイルとbashスクリプトライブラリの違いは正確に何ですか?ライブラリのスクリプトも実行できませんか?

ベストアンサー1

少なくともbashスクリプトの場合、実行可能ファイルとbashスクリプトライブラリの違いは正確に何ですか?

私はシェルスクリプトで「ライブラリ」という言葉が多用されていることを聞いたことがありません。もしそうなら、プログラムをライブラリに分割する必要があるという事実は、それがより良いプログラミング言語で最もよく実装されることを意味すると提案したいと思います。

つまり、シェルプログラミングのライブラリは他のプログラミング言語のライブラリと似ていると思います。つまり、他のプログラムで使用する関数とサブルーチンを提供しますが、それ自体は提供しません。する特にこれらのツールに関連するすべて。たとえば、ライブラリは特定のデータを圧縮/圧縮解除するためのツールを提供できますが、コマンドラインで指定されたファイルを圧縮/圧縮解除するためのコマンドラインツールを実装するには、ライブラリを使用するプログラムが必要になる場合があります。

実際、シェルに実装されているプログラムは他のプログラムと同様に正常に実行されますが、シェルライブラリには関数定義のみが含まれており、これらの定義は他のシェルスクリプトから取得されます。

mainたとえば、以下の2つのファイルでは、プログラムとライブラリと呼ばれることがありますfunctions.sh。実行可能にmainしてください./main$PATHfunctions.sh$PATHsourcebash functions.sh

main:

#!/bin/bash
source functions.sh
say hello world

functions.sh:

say() {
    printf "%s\n" "$*"
}

実行可能プログラムに関する重要事項いいえ拡張を持つことは、実装を公開しないことに関連する可能性があります。プログラムユーザーはそれがどのように実装されるかを知る必要はなく、シェルスクリプトをPerlで再実装すると呼び出さないと混乱が少なく、名前が必要ない場合はfoo.sh作業量が減ります。プログラムのすべてのユーザーが変更される可能性があります(修正が必要です)。

ただし、シェルライブラリはシェルスクリプトでのみ使用できるため、実装が公開されます。する合理的な。

おすすめ記事