有没有办法在源命令中使用 bash 脚本时获取其路径

有没有办法在源命令中使用 bash 脚本时获取其路径

我想设置一个相对于脚本位置的环境变量。我可以轻松找到并设置该脚本(test.sh)的持续时间:

#!/bin/bash
export MY_VARIABLE=$(dirname $0)
echo MY_VARIABLE is : $MY_VARIABLE

称呼:

./test.sh

输出:

MY_VARIABLE is : .

如果我想在其他脚本中使用该变量,则需要使用 source 命令进行设置。这当然不起作用,因为我现在调用的不是 test.sh 脚本,而是 source 命令。

source test.sh

输出:

dirname: illegal option -- b
usage: dirname path
MY_VARIABLE is :

有没有办法在脚本中定义环境变量,然后可以与源命令一起使用?

答案1

测试2.sh:

#!/bin/bash
MY_VARIABLE=$(PWD)/$(dirname $BASH_SOURCE)
echo MY_VARIABLE is : $MY_VARIABLE

称呼:

./test2.sh

输出:

MY_VARIABLE is : /some/path/.

称呼:

source ./test2.sh

输出:

MY_VARIABLE is : /some/path/.

感谢@webmark 和@GordonDavisson。

相关内容