Atualmente fiz isso fornecendo um arquivo de funções incluindo todas as minhas funções nos vários scripts que o utilizam:
source ./functions.sh
Uma desvantagem que notei é que o número da linha que o bash imprime para erros de sintaxe não é mais o do script original.
Responder1
A maneira como você está usando é razoável.
Não consigo reproduzir seu problema com obash shellEu poderia trabalhar (GNU bash, versão 4.1.2 e GNU bash, versão 4.3.11). Veja abaixo:
Roteiro de teste go.sh
. Você pode executá-lo ./go.sh
depois de torná-lo executável, chmod u+x go.sh
bem como/bin/bash go.sh
echo " ### Here we start ###" Script line 1
source my_sourced_file
echo Script line 3
casfsda # this is the line 4 of script
echo Script line 5
f "Script line #6 using the function from sourced file"
echo " ### Here we finish ###" Script line 7
Arquivo com funções que você deve colocar no diretório atual chamado my_sourced_file
:
echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of my_sourced_file"
echo linea 4 my_sourced_file
Saída (empretoo erro)
### Aqui começamos ### Linha 1 do script
Olá palavra, esta é a 1 linha do meu_arquivo_fonte
Olá Gustave linha número 3 do meu arquivo_fonte
linha 4 meu_arquivo_fonte
Linha do script 3
./go.sh: linha 4: casfsda: comando não encontrado
Linha 5 do script
Olá Linha 6 do script usando a função do arquivo de origem ### Aqui terminamos ### Linha 7 do script
- Testado no GNU bash, versão 4.3.11
- e no antigo GNU bash, versão 4.1.2