bash - 如何检测脚本是否正在获取

标签 bash ksh

我有一个脚本,我不希望它调用 exit如果它是来源。

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

是否有一种可靠的方法来检测脚本是否正在获取?

最佳答案

这似乎可以在 Bash 和 Korn 之间移植:

[[ $_ != $0 ]] && echo "Script is being sourced" || echo "Script is a subshell"

与此类似的行或类似 pathname="$_" 的分配(带有稍后的测试和操作)必须在脚本的第一行或在shebang 之后的行(如果使用,应该用于ksh,以便在大多数情况下工作)。

关于bash - 如何检测脚本是否正在获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683279/

相关文章:

bash - 值对于 base 来说太大了(错误标记是 "09")

ruby - -bash :/usr/bin/bundle:/System/Library/Frameworks/Ruby. framework/Versions/1.8/usr/bin/ruby: 错误的解释器:没有这样的文件或目录

git - 在 shell 脚本中检查 Bitbucket 登录凭据

linux - 如何在shell脚本中扩展变量?

bash - 使用 Bash 计算 AIX 中两个日期之间的天数

linux - Linux 中的监听端口

shell - 使用 If-Then-Else 将文件拆分为 3 个文件

shell - 后台进程输出到Shell变量的输出

bash - ksh 上的 pushd/popd?

linux - 在linux内核中执行bash脚本