如何检测脚本是否来源我有一个脚本,exit如果它被采购我不希望它调用。我想过检查是否$0 == bash但如果脚本来自另一个脚本,或者如果用户从不同的shell中获取它,则会出现问题ksh。是否有可靠的方法来检测脚本是否来源?
3 回答
慕斯王
TA贡献1864条经验 获得超2个赞
这似乎可以在Bash和Korn之间移植:
[[ $_ != $0 ]] && echo "Script is being sourced" || echo "Script is a subshell"
与此类似的行或类似的赋值pathname="$_"
(以及稍后的测试和操作)必须位于脚本的第一行或shebang之后的行(如果使用的话,应该是ksh以便它可以在大多数情况)。
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
如果您的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 ..."
- 3 回答
- 0 关注
- 689 浏览
添加回答
举报
0/150
提交
取消