Eu tenho um grande script de configuração (bash) que é muito bem modularizado em funções separadas para completar um monte de tarefas para instalar / configurar um novo lançamento de um pacote de software.
Percebemos que seria muito útil ter algumas dessas funções disponíveis para serem chamadas sem executar o script inteiro. Eu poderia ter feito o script aceitar um argumento para chamar a função específica, mas como o script já cresceu para mais de 1.200 linhas, para facilitar a leitura, pretendo dividi-lo em sub-scripts que serão executados a partir do pai. O objetivo é que os sub-scripts possam ser executados independentemente para reconfigurar algo específico.
O script pai (chamado de assistente) em sua forma original tinha várias variáveis globais que eram manipuladas pelas funções conforme o script era executado. Para que o script seja dividido, estou criando um arquivo persistente para todos os valores de configuração, junto com uma função que permite que as funções atualizem os pares key = value no arquivo persistente (ou os acrescente, se não o fizerem já existe).
Ok, a pergunta atual! Como o assistente é o script pai e os filhos (sub-scripts) podem editar ou adicionar valores de configuração quando são chamados, é aceitável para o assistente? para re-source o arquivo persistir várias vezes através do fluxo do assistente (o que é necessário desde sourcing não flui "para cima")? Ou seja, sempre que uma função do assistente inicia, que configura um determinado software, ele cria o arquivo primeiro, caso um sub-script faça uma alteração em um valor de configuração.
Como as funções estão fornecendo o arquivo, estou assumindo que, quando a função estiver completa, ela sairá do escopo (ou qualquer que seja a terminologia equivalente no bash). Então isso não deve causar problemas, mas eu adoraria ter certeza. Obrigado por qualquer conselho!
** EDIT: Para esclarecimento, o principal motivo para usar o arquivo persistente (e por que o chamo assim) é que eu quero que ele fique disponível para quando um dos sub-scripts for chamado individualmente. Sem o assistente configurando as variáveis globais, elas perderiam informações vitais sobre seus ambientes quando executadas de maneira independente.