Answers:
已经在SO上对此进行了讨论。@barroyo给出的最高评价答案是使用
[[ "${BASH_SOURCE[0]}" != "${0}" ]] && echo "script ${BASH_SOURCE[0]} is being sourced ..."
例如,除了检查$ 0(Mickl回答)以外,还可以将扩展名从.sh更改为.src。这将有助于您了解不应执行此脚本的任何人。
创建一个自定义解释器source_reminder
:
#!/bin/sh
printf "%s\n" "Source me!" >&2
exit 1
不要忘记使其可执行。然后在脚本中使用它:
#!/path/to/your/source_reminder
foo
bar
whatever
现在,如果您在不购买资源的情况下运行脚本,则提醒将完成其工作。
#!/bin/echo do not execute
或#!/bin/false
或#!/usr/bin/awk BEGIN { print "you must source " ARGV[1]; exit(1) }
。但是,这不能捕获以类似方式执行脚本的情况sh script
(因为它忽略了Shebang)。