我有一个脚本散落在我的文件系统周围(构建过程的副作用),它设置了一些需要在我的 shell 中正确操作的全局环境变量(LD_LIBRARY_PATH、PATH、ROOTDIR 等)。当然,这意味着我需要source script.sh或. script.sh让它工作,而不是./script.sh(这会产生一个新的 shell,而不是在我当前的 shell 中设置变量)。
有什么我可以添加到脚本中来防止(或警告)有人运行的./script.sh吗?
Mik*_*kel 16
在 shell 脚本中,$0是当前运行脚本的名称。您可以使用它来判断您是被采购还是像这样运行:
if [[ "$(basename -- "$0")" == "script.sh" ]]; then
echo "Don't run $0, source it" >&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
wis*_*cky 11
最简单的方法bash是:
if [ "$0" = "$BASH_SOURCE" ]; then
echo "Error: Script must be sourced"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
$BASH_SOURCE 始终包含脚本的名称/路径。
$0 仅在未获取时包含脚本的名称/路径。
所以当它们匹配时,这意味着脚本不是来源。
| 归档时间: |
|
| 查看次数: |
7655 次 |
| 最近记录: |