为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测脚本是否来源

如何检测脚本是否来源

明月笑刀无情 2019-08-15 15:15:39
如何检测脚本是否来源我有一个脚本,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以便它可以在大多数情况)。


查看完整回答
反对 回复 2019-08-15
?
一只名叫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 ..."


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 689 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信