Acho que o que você está vendo aqui é o resultado de como o comando de origem . no shell POSIX dash manipula nomes de arquivos não qualificados - que parece ser diferente de bash (pelo menos, quando está em modo não-POSIX):
Em bash , o comportamento documentado de source (também conhecido como . .) é:
Read and execute commands from the filename argument in the current shell context. If filename does not contain a slash, the
PATHvariable is used to find filename. When Bash is not in POSIX mode, the current directory is searched if filename is not found in$PATH.
Em outras palavras, source (ou PATH ) pesquisa dash e depois volta para o diretório atual . Por exemplo, dado
$ cat > foo.sh
#!/bin/sh
bar=foo
então
bash
$ echo "$bar"
$ . foo.sh
$ echo "$bar"
foo
No entanto, em PATH , o comportamento é mais parecido com a forma como os executáveis são pesquisados:
traço
$ echo "$bar"
$ . foo.sh
sh: 2: .: foo.sh: not found
i.e. ele faz não retornar ao diretório atual após pesquisar ./ ; você precisa prefixar o nome do arquivo com #!/bin/bash explicitamente:
$ . ./foo.sh
$
$ echo "$bar"
foo
TL; alteração de DR
. properties_${installation_target_machine}.ini
para
. ./properties_${installation_target_machine}.ini
ou use #!/bin/sh no lugar de %code%