web-dev-qa-db-ja.com

zsh-ソース〜/ .zshrcと最初に.zshrcを読み取るシェルを区別します

~/.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が実行されているのかをテストする、よりクリーンな方法があるはずです。

4
Ryan Erwin

$ZSH_EVAL_CONTEXT"toplevel"シェルからスクリプトを呼び出す場合。 (例えば ./script$ZSH_EVAL_CONTEXT"toplevel:file"スクリプトを入手した場合。 (例えば source script$ZSH_EVAL_CONTEXT"file"ランタイム構成として自動的に実行される場合。 (お気に入り ~/.zshrc だろう。)

変数が見つかりました ここ

4
timotree