如何检测脚本是否来源

如何检测脚本是否来源

我有一个脚本,exit如果它被采购我不希望它调用。

我想过检查是否$0 == bash但如果脚本来自另一个脚本,或者如果用户从不同的shell中获取它,则会出现问题ksh

是否有可靠的方法来检测脚本是否来源?


明月笑刀无情
浏览 690回答 3
3回答

慕斯王

这似乎可以在Bash和Korn之间移植:[[ $_ != $0 ]] && echo "Script is being sourced" || echo "Script is a subshell"与此类似的行或类似的赋值pathname="$_"(以及稍后的测试和操作)必须位于脚本的第一行或shebang之后的行(如果使用的话,应该是ksh以便它可以在大多数情况)。

一只名叫tom的猫

如果您的Bash版本知道BASH_SOURCE数组变量,请尝试以下方法:# man bash | less -p BASH_SOURCE#[[ ${BASH_VERSINFO[0]} -le 2 ]] && echo 'No BASH_SOURCE array variable' && exit 1[[ "${BASH_SOURCE[0]}" != "${0}" ]] && echo "script ${BASH_SOURCE[0]} is being sourced ..."
打开App,查看更多内容
随时随地看视频慕课网APP