~/.zshrc
を実行して構成を更新するときと、シェルが初期化時にsource ~/.zshrc
を読み取るときを区別する、~/.zshrc
でテストできるコマンドまたは環境変数はありますか?
これまでのところ、私の解決策は~/.zshrc
の最後に変数を設定し、その後の実行でその変数をテストすることですが、システムまたは環境からこの情報を直接取得するよりもクリーンな方法があるかどうか知りたいです。とても壊れやすい方法で一緒にハッキングする....
# somewhere in ~/.zshrc
if [[ -n $CONSOLE_ALREADY_RUNNING ]]; then
echo "we've alredy loaded ~/.zshrc"
echo "so you must be sourcing it"
fi
# many more lines of ~/.zshrc commands
# last line of ~/.zshrc
export CONSOLE_ALREADY_RUNNING=1
source /.zshrc
を介してリロードしているのか、メモリにロードされたばかりのzsh
の新しいインスタンスに対して.zshrc
が実行されているのかをテストする、よりクリーンな方法があるはずです。
$ZSH_EVAL_CONTEXT
は"toplevel"
シェルからスクリプトを呼び出す場合。 (例えば ./script
)$ZSH_EVAL_CONTEXT
は"toplevel:file"
スクリプトを入手した場合。 (例えば source script
)$ZSH_EVAL_CONTEXT
は"file"
ランタイム構成として自動的に実行される場合。 (お気に入り ~/.zshrc
だろう。)
変数が見つかりました ここ 。