web-dev-qa-db-ja.com

シェルスクリプトがソースにするファイル拡張子の公式の標準/規則

実行する代わりにソースしたいシェルスクリプトのファイルタイプ拡張子に規約があるかどうか疑問に思いました。例えば:

  1. このスクリプトをサブシェルで実行する場合。

    ./script.sh 
    
  2. 現在のシェルからこのスクリプトを実行することを覚えておきたい場合。

    . script.source 
    

2番目の例のファイルタイプには規則(たとえばPOSIXのような)がありますか?何かのようなもの .sourceまたは.sourceme


更新

この質問はいかなる意見についても尋ねるものではありません。この種のスクリプトに標準化されたファイル拡張子があるかどうかを知りたいと明確に述べました。この質問は、意見に基づくものではありません 同様の問題でよく知られている質問bashスクリプトには.shまたは.bash拡張子を使用しますか? )。

11

私は.shを使用します(POSIX sh言語のファイルの場合、.bash非sh互換のbashファイルの場合、拡張子は言語を識別しますスクリプトは、)をソースとする(またはより一般的には実行を意図しない)ファイル用に記述され、実行を意図したファイルの拡張子はありません。

以下を追加することもできます。

#! /bin/echo Please-source

she-bangを使用すると、誤って実行された場合(これらのファイルには実行権限が与えられていないはずですが、すでに実行が妨げられているはずです)、代わりにソースにする必要があることが通知されます。

18

ソースファイルの場合、最善の方法は、スクリプトを構成するファイルの.confと、関数または他のユーティリティを含むファイルの.shlibまたは.shlibsであると思います。

スクリプトが間違ったシェルで実行されるのを防ぎ、ハッシュバングでは不十分な場合は、次のように使用できます。

if [ "$(readlink "/proc/$$/exe")" != "/bin/bash" ]; then
      echo >&2 "CAUTION: Wrong interpreter detected. You must use bash."
      exit 1
fi