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

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

是否存在我可以在我的程序中测试的命令或环境变量,~/.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

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

答案1

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

找到变量这里

相关内容