1

$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

我怎样才能得到正确的值?

4

1 回答 1

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!

于 2013-10-21T09:27:12.027 回答