Um script pode ser quebrado conforme você descreve - praticamente tudo pode ser feito. Eu diria que a 'boa abordagem' seria compartimentar seu roteiro grande, descobrir onde partes dele poderiam ser executadas como um processo separado, comunicando-se através de mecanismos de IPC.
Além disso, para um script de shell, eu o empacotaria como um único arquivo. Como você diz, isso torna a distribuição mais difícil: você precisa saber onde os scripts de 'biblioteca' estão localizados - não há um bom padrão para scripts de shell - ou confiar no usuário para definir seu caminho corretamente.
Você pode distribuir um programa de instalação que lide com tudo isso para você, extraindo os arquivos, colocando-os no local apropriado, dizendo ao usuário para adicionar algo como export PROGRAMDIR=$HOME/lib/PROGRAM
ao arquivo ~ / .bashrc. Em seguida, o programa principal poderá falhar se $PROGRAMDIR
não estiver definido ou não contiver os arquivos esperados.
Eu não me preocuparia tanto com a sobrecarga de carregar os outros scripts. A sobrecarga é realmente apenas abrir um arquivo; o processamento do texto é o mesmo, especialmente se forem definições de funções.