source "$(dirname -- "$0")/file2.sh"
para a origem file2.sh
localizada no mesmo diretório que o script de chamada.
Os arquivos a seguir residem em um determinado diretório:
path/to/file.sh
path/to/file2.sh
Funciona para chamar file2.sh
dentro de file.sh
da seguinte forma:
path/to/file.sh
. ./path/to/file2.sh
mas quando os arquivos são retirados em outro diretório:
src/path/to/file.sh
src/path/to/file2.sh
file.sh não pode mais encontrar o arquivo2
Possível solução
Um possível é verificar se existe um determinado diretório
path/to/file.sh
if [ -d "src" ]; then
. $PWD/src/path/to/file2.sh
else
. $PWD/path/to/file2.sh
fi
mas quando os arquivos são retirados em outro diretório, isso irá quebrar novamente.
Pergunta
Qual solução funcionará independentemente na estrutura de diretórios?
Tags bash