シェルスクリプトソースファイル拡張子の公式標準/条約

シェルスクリプトソースファイル拡張子の公式標準/条約

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

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

     ./script.sh 
    
  2. 現在のシェルでこのスクリプトを実行することを覚えたい場合はどうすればよいですか?

     . script.source 
    

お持ちですか?契約(例:POSIX)2番目の例のファイル形式は何ですか?.sourceまたはに似ていますか.sourceme


修正する

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

答え1

私は(POSIX言語の.shファイルの場合、shと互換性のないファイルの場合、つまり拡張子はスクリプトが書かれている言語を識別します)取得したファイル(またはより一般的に実行する意図のないファイル)と次のファイルを使用します。実行する拡張子がありません。sh.bashbash

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

#! /bin/echo Please-source

エラーが発生した場合(ファイルに実行権限が与えられていないことを願っていますが、すでに実行をブロックしているため)、通知を受け取り、代わりに受け取る必要があります。

答え2

ソースファイルの場合、最良のアプローチは設定スクリプトの場合は.conf、機能やその他のユーティリティを含むファイルの場合は.shlibまたは.shlibsです。

スクリプトが間違ったシェルで実行されるのを防ぎ、hashbangだけでは不十分な場合は、次のようにします。

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

関連情報