O efeito é semelhante, mas o comportamento não é exatamente o mesmo.
exec < somefile conecta a entrada padrão a somefile , portanto, o shell começa a ler esse arquivo em vez do terminal ao qual está conectado no momento. (Bem, pelo menos o bash faz, o Zsh se comporta de maneira diferente.) Isso resulta efetivamente no shell atual processando o conteúdo de somefile , como faria com source somefile . Depois de esgotar somefile , o shell sai.