Quando você usa source
, um script é como se estivesse escrevendo o arquivo linha a linha do teclado. Isso significa que set -e
considerará o shell atual e que, no erro, ele sairá do shell atual.
Essa é uma solução alternativa. Hoje me sinto preguiça então achei que o computador pode escrever ||return
para mim, ou melhor ler linha por linha o arquivo e executar assim:
#!/bin/bash
# this is the file MySource.sh
while IFS='' read -r line
do
[[ $line == \#* ]] || $line || return
done < "$1"
execute com . MySource.sh FileToBeSourced.sh
Se o seu script FileToBeSourced.sh estiver com comandos de uma linha, ele deve funcionar.
Muito longe para estar pronto para ser usado em um ambiente de produção.
Teste e, eventualmente, use por sua conta e risco .
Salta as linhas que começam com #
porque devem causar o erro # command not found
.