O comando source
é explicitamente destinado a carregar scripts como se fossem parte do script principal. Pense nisso como C #include
ou PHP require()
.
Isso significa que o conteúdo desse arquivo também deve ser um script bash válido. O Bash não se importará com #!
headers nem pedirá ao kernel que se preocupe com eles; ele apenas lê o arquivo diretamente e passa por cima deles como se fossem comentários regulares.
Em outras palavras, se você quiser o #! linha a ser honrada, o seu script principal terá que executar diretamente esse arquivo como um comando.
(Ou diga perl
para executá-lo. O Perl tenta ser útil e gera o intérprete correto para você.)