zsh - 区分源 ~/.zshrc 和最初读取 .zshrc 的 shell

Rya*_*win 5 linux zsh shell environment-variables dotfiles

是否有我可以测试的命令或环境变量,~/.zshrc它可以区分我何时运行source ~/.zshrc更新我的配置和 shell~/.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
Run Code Online (Sandbox Code Playgroud)

似乎应该有一些更清晰的方法来测试我是否只是通过重新加载source /.zshrc或者是否.zshrc正在为zsh刚刚加载到内存中的新实例执行。

tim*_*ree 5

$ZSH_EVAL_CONTEXT"toplevel"如果您从 shell 调用脚本。(例如./script$ZSH_EVAL_CONTEXT"toplevel:file"如果您获取脚本。(例如source script$ZSH_EVAL_CONTEXT"file"如果它作为运行时配置自动运行。(就像~/.zshrc那样。)

这里找到了变量。