我们能否在脚本内部确定它是否以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