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
PATH
variable 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%