检索虚线脚本的路径

时间:2013-10-21 09:25:37

标签: bash

通过$0变量获取bash中正在运行的脚本的路径是微不足道的。但是,如果您通过另一个脚本点缀它,它将无效,而是您将获得调用脚本的路径。考虑一下这个例子:

#!/bin/bash
# script1.sh
echo $(readlink -f $0)

...

#!/bin/bash
# script2.sh
. /tmp/script1.sh
echo $(readlink -f $0)

上述脚本的输出是:

/tmp/script2.sh
/tmp/script2.sh

但是,如果虚线脚本中的$0发出了该脚本的路径,那么输出将是:

/tmp/script1.sh
/tmp/script2.sh

我怎样才能获得正确的价值?

1 个答案:

答案 0 :(得分:2)

要克服此问题(特定于bash),您可以使用${BASH_SOURCE[0]}

#!/bin/bash
# script1.sh
real_dollar_zero=${BASH_SOURCE[0]}
echo $(readlink -f $real_dollar_zero)

现在输出是:

/tmp/script1.sh
/tmp/script2.sh

中提琴! - The strung musical instrument often confused with a violin!