Usando o source para incluir um script (ou uma função)Indo um passo além (e complicando um pouquinho mais), uma outra forma de se fazer isso é usar o recurso source para executar outros scrip e, por conseguinte, se o outro script é uma função, então estará incluindo a função.
Isso pode ser interessante e necessário quando o script envolve questões de variáveis.
Em linhas gerais se pode entender assim: quando é chamado um script dentro de um outro script, as variáveis do shell daquele que chama não são afetadas pela execução do script chamado, o que significa que se o script chamado deveria alterar variáveis no processamento global, apenas não irá fazer.
Na execução direta o script chamado será executado num shell diferente, que será encerrado ao término daquele script e isso nem sempre é conveniente, muito embora frequentemente também não faça diferença, dependendo do que concretamente se está processando.
Para que todo o processo seja feito dentro do mesmo shell, e então nesse caso o script chamado, se o caso, irá afetar as variáveis locais, então o melhor é usar o source para incluir scripts chamados.
Também aqui se o script chamado pelo source não estiver no mesmo diretório, então é necessário fornecer o caminho completo.
Ilustrando o uso do source:
Tem-se três scripts, quais sejam:
main.sh#!/bin/bash
source incluso01.sh
source incluso02.sh
echo "comando 01"
echo "comando 02"
echo "comandos etc..."
echo "Este é o main.sh script"
incluso01.sh#!/bin/bash
echo "comando 01 do incluso01"
echo "comando 02 do incluso01"
echo "comando etc... do incluso01"
echo "Este é o incluso01.sh script"
incluso02.sh#!/bin/bash
echo "comando 01 do incluso02"
echo "comando 02 do incluso02"
echo "comando etc... do incluso02"
echo "Este é o incluso02.sh script"
Criados os scripts, e apenas para simplificar se está supondo que estejam todos dentro do mesmo diretório, então execute o principal fazendo:
./main.sh
O output será:
comando 01 do incluso01
comando 02 do incluso01
comando etc... do incluso01
Este é o incluso01.sh script
comando 01 do incluso02
comando 02 do incluso02
comando etc... do incluso02
Este é o incluso02.sh script
comando 01
comando 02
comandos etc...
Este é o main.sh script
Assim sendo, o source também pode ser utilizado para incluir outros scripts.
Existem outros aspectos, mas para começar a conversar sobre o tema, acho que isso por enquanto basta.
