Se você der o comando exec < file , então o shell bash atual lerá sua entrada do arquivo , em vez de std-in.
Eu assumo o que acontece quando você dá os comandos individualmente no terminal é o comando exec funciona corretamente, e seu shell bash (interativo) atual começa a ler data-file (ao invés do seu teclado). Eu acho que esse arquivo de dados não contém comandos bash e, portanto, o bash responde com o comando não encontrado.