実行する代わりにソースしたいシェルスクリプトのファイルタイプ拡張子に規約があるかどうか疑問に思いました。例えば:
このスクリプトをサブシェルで実行する場合。
./script.sh
現在のシェルからこのスクリプトを実行することを覚えておきたい場合。
. script.source
2番目の例のファイルタイプには規則(たとえばPOSIXのような)がありますか?何かのようなもの .source
または.sourceme
?
この質問はいかなる意見についても尋ねるものではありません。この種のスクリプトに標準化されたファイル拡張子があるかどうかを知りたいと明確に述べました。この質問は、意見に基づくものではありません 同様の問題でよく知られている質問 ( bashスクリプトには.shまたは.bash拡張子を使用しますか? )。
私は.sh
を使用します(POSIX sh
言語のファイルの場合、.bash
非sh互換のbash
ファイルの場合、拡張子は言語を識別しますスクリプトは、)をソースとする(またはより一般的には実行を意図しない)ファイル用に記述され、実行を意図したファイルの拡張子はありません。
以下を追加することもできます。
#! /bin/echo Please-source
she-bangを使用すると、誤って実行された場合(これらのファイルには実行権限が与えられていないはずですが、すでに実行が妨げられているはずです)、代わりにソースにする必要があることが通知されます。
ソースファイルの場合、最善の方法は、スクリプトを構成するファイルの.confと、関数または他のユーティリティを含むファイルの.shlibまたは.shlibsであると思います。
スクリプトが間違ったシェルで実行されるのを防ぎ、ハッシュバングでは不十分な場合は、次のように使用できます。
if [ "$(readlink "/proc/$$/exe")" != "/bin/bash" ]; then
echo >&2 "CAUTION: Wrong interpreter detected. You must use bash."
exit 1
fi