Bash 如何在zsh中编写modulino?

Bash 如何在zsh中编写modulino?,bash,shell,zsh,modulino,Bash,Shell,Zsh,Modulino,我喜欢以“modulinos”的形式编写脚本,shell脚本可以自己作为小CLI程序调用,也可以由其他程序作为库导入 我可以在bash中通过以下方式实现这一点: 我也希望在zsh做这件事。我怎么能这样做 最重要的是找到一种模仿bash的方法: if [[ "$BASH_SOURCE" == "$0" ]] then main fi 换句话说,查找此脚本的名称与调用程序的名称(当它们相等时,运行main(),当它们不同时,跳过,因为此脚本将作为库导入) 问题是,我认为zsh的$0行为类

我喜欢以“modulinos”的形式编写脚本,shell脚本可以自己作为小CLI程序调用,也可以由其他程序作为库导入

我可以在bash中通过以下方式实现这一点:

我也希望在zsh做这件事。我怎么能这样做

最重要的是找到一种模仿bash的方法:

if [[ "$BASH_SOURCE" == "$0" ]]
then
    main
fi
换句话说,查找此脚本的名称与调用程序的名称(当它们相等时,运行main(),当它们不同时,跳过,因为此脚本将作为库导入)


问题是,我认为zsh的
$0
行为类似于bash的
$bash\u SOURCE
,我认为没有一个zsh等价于bash的
$0
(其工作方式不同)来进行补偿。

检查
zsh\u eval\u context
的最后一个元素的值。如果它等于“toplevel”,那么应该等于
$BASH\u SOURCE==$0
检查为true

if [[ $zsh_eval_context[-1] == toplevel ]]; then
    main
fi 

谢谢,伙计!在我的机器上工作得很好!