如何确定shell脚本文件是否来自Bash

时间:2012-03-24 08:18:25

标签: bash shell

我想知道如何确定脚本文件的执行或来源。

例如,

# Shell script filename build.sh
if [ "x$0" = "xbash" ]; then
    echo "I am sourced by Bash"
else
    echo "I am executed by Bash"
fi

如果我输入

source build.sh

它将输出我来自Bash

如果我输入

./build.sh

它将输出我由Bash执行

目前,我使用$ 0来执行此操作。有更好的主意吗?

受到Tripeee的启发,我找到了一个更好的方法:

#!/bin/bash

if [ "x$(awk -F/ '{print $NF}' <<< $0)" = 'xcdruntime' ]; then
    echo Try to source me, not execute me.
else
    cd /opt/www/app/pepsi/protected/runtime
fi

1 个答案:

答案 0 :(得分:10)

如果由其他脚本提供,则无效。我会走另一条路;

test "X$(basename -- "$0")" = "Xbuild.sh" || echo Being sourced

更新:为两个字符串添加了X前缀。

也更新:在basename调用中添加了双短划线。