source
é um comando interno, não externo, portanto, usar o time
externo para o tempo não faz sentido. Faça um dos seguintes:
TIMEFMT=%E
for file in ${(M)config_files}
do
time (source file)
done
Ou:
for file in ${(M)config_files}
do
\time -f %E zsh -c 'source "$1"' zsh "$file"
done
No primeiro, o subshell é necessário porque :
% bl0ck_qu0te% E, no último caso, você está iniciando uma nova instância zsh para cada arquivo. Portanto, em ambos os casos, não há como sincronizar facilmente os scripts dependentes (por exemplo, quando um arquivo de configuração faz algo que é necessário ou de alguma forma afeta outro arquivo de configuração). Como alternativa, você pode salvar a saída de time
após cada origem, o que lhe dará um tempo acumulado:
TIMEFMT=%E
{time} 2> times
for file in ${(M)config_files}
do
source file
{time} 2>> times
done
Você pode usar awk
ou algo assim para obter os tempos individuais:
awk 'NR != 1 {print $0 - prev} {prev = $0; getline}' times