Eu posso reproduzir seu comportamento se eu alias fi
:
$ alias fi=:
+ alias fi=:
$ . ./test
+ . ./test
++ set -x
bash: ./test: line 6: syntax error: unexpected end of file
Funciona quando você o executa, mas falha quando você o obtém porque os aliases não estão disponíveis em shells não interativos (o tipo de shell que executa scripts de shell). Conforme explicado no manual do bash :
Aliases are not expanded when the shell is not interactive, unless the
expand_aliases
shell option is set usingshopt
(see The Shopt Builtin).
No entanto, quando você é source
something, ele é executado no shell atual, que, por ser interativo, já carregou os aliases e, portanto, o fi
alias é reconhecido e interrompe a origem.