はじめに
Bashシェルスクリプトで関数のコールスタックを取得・出力する の続きです。 続きというよりも、当エントリを書きたかったための前振りが上記のエントリです。
実行するシェルスクリプトが、 . や source コマンド経由で呼び出された場合には、内部で定義されている 変数 や 関数 がカレントプロセス上に展開されることになります。
スクリプトのファイル内に書かれている 変数 や 関数 が漏れてしまうのを避けるための方法を共有します。
検証環境
| |
$FUNCNAME 変数をハックする
Bashシェルスクリプトで関数のコールスタックを取得・出力する で見たとおり、 . または source コマンドを使って呼び出されたスクリプトは、 $FUNCNAME 変数のスタックトレース上に source という関数スタックが積まれます。
この仕組みを利用し、 is_sourced という関数を作成し、判定を行います。
| |
ひとこと
. または source コマンドを使って呼び出されることを期待する場合には以下のように記述すればOKですね。
| |