1. ホーム
  2. バッシュ

[解決済み】スクリプトがソースされているかどうかを検出する方法

2022-04-16 10:53:33

質問

を呼び出したくないスクリプトがあります。 exit がソースされている場合。

をチェックすることを考えました。 $0 == bash しかし、これはスクリプトが他のスクリプトからソースされている場合、あるいはユーザーが ksh .

スクリプトがソースされているかどうかを検出する確実な方法はありますか?

どのように解決するのですか?

これはBashとKornの間で移植可能なようです。

[[ $_ != $0 ]] && echo "Script is being sourced" || echo "Script is a subshell"

このような行や、次のような代入があります。 pathname="$_" (後のテストとアクションを含む) スクリプトの最初の行か、shebang (使用する場合は、ほとんどの状況で動作するように ksh 用であるべき) の後の行になければなりません。