你应该如何相对于正在运行的脚本来源脚本?

时间:2013-11-03 22:38:30

标签: bash

我最近一直在研究一些bash脚本,我开始想知道应该如何设置更大的脚本。

bash脚本总是在当前目录中运行,因此要使用source,您需要源脚本的绝对路径。

我看到了this post,但对于我希望成为常见用例的内容来说似乎过于复杂。

是否有惯用的方法在与运行脚本相同的目录中提供脚本?

2 个答案:

答案 0 :(得分:3)

您可以使用dirname$0来确定当前运行的脚本所在的位置(此处doit2.sh是与原始脚本位于同一目录中的脚本):

. $(dirname $0)/doit2.sh

答案 1 :(得分:2)

没有36,000个解决方案:

1)绝对路径:

source /absolute_path/script.sh # sourcing a script
. /absolute_path/script.sh # sourcing a script
/absolute_path/script.sh # executing a script

2)相对路径:

./script.sh # when script.sh is in the current directory
./dir/script.sh # when script.sh is in the directory 'dir' which is in the current directory
../script.sh # when script.sh is in the parent directory

您也可以将source. script.sh与相对路径一起使用。

3)使用别名:

echo "alias script='/absolute_path/script.sh'" >> ~/.bashrc
source ~/.bashrc
script # executing script.sh

4)添加到PATH:

echo "export PATH=$PATH:/absolute_path/script.sh" >> ~/.bashrc
source ~/.bashrc
script.sh # executing script.sh

要了解采购脚本和执行脚本之间的区别,请参阅此subject