以下文件位于某个目录中:
path/to/file.sh
path/to/file2.sh
file2.sh
内部调用的工作原理file.sh
如下:
path/to/file.sh
. ./path/to/file2.sh
但是当文件在另一个目录中签出时:
src/path/to/file.sh
src/path/to/file2.sh
file.sh 找不到 file2 了
可能的解决方案
一种可能是检查某个目录是否存在
path/to/file.sh
if [ -d "src" ]; then
. $PWD/src/path/to/file2.sh
else
. $PWD/path/to/file2.sh
fi
但是当在另一个目录中检出文件时,这将再次中断。
问题
什么解决方案将独立于目录结构工作?
答案1
source "$(dirname -- "$0")/file2.sh"
源代码file2.sh
位于与调用脚本相同的目录中。