POSIXシェル言語のソース可能/実行可能シェルスクリプト

POSIXシェル言語のソース可能/実行可能シェルスクリプト

スクリプトの両方を作成する良いPOSIX互換の方法はありますか?実行可能ファイル(スクリプトの関数が実行される)と内因性コマンドを使用して.も(少なくとも)1つの機能が使用できるようになる以外は何も起こりませんか?

私は試した:

src.sh:

#!/bin/sh -eu
FILENAME=src.sh
f() { echo hello from f; }
case $0 in ($FILENAME|*/$FILENAME) f "$@";; esac

次に、次のようにテストします。

( PATH=$PWD:$PATH; src.sh; . src.sh ; echo ===; f )

これはCygwin、MacOS、Linuxで期待どおりに機能するようです。

改善方法の提案がありますか?

関連情報