脚本以“源”或“可执行文件”启动?

脚本以“源”或“可执行文件”启动?

我们能否在脚本内部确定它是否以source(.) 或executable(shebang 或类似的东西) 开头?

答案1

测试一下$0你是否有脚本:

#!/bin/bash
echo $0

并使其可执行 ( chmod 755 test.sh) 并执行以下操作:

source test.sh

你会得到bash(或者其他东西,取决于你的登录方式和你的 shell 是什么)。

如果你这样做

./test.sh

你得到了./test.sh,所以假设脚本知道它是如何保存在光盘上的,你应该这样做:

if [ $(basename "$0") == "test.sh" ] 
then
   ..... your code here for non-sourced
else
   ..... your code here for sourced
fi

相关内容