是否存在我可以在我的程序中测试的命令或环境变量,~/.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
会一样。)
找到变量这里。