Com uma substituição de comando, o shell precisaria esperar que o comando em $(...) fosse completamente concluído antes de executar o restante da linha de comando (o echo -e ).
Nesse caso, você não precisa de uma substituição de comando:
npm run start
produziria sua saída sem a ajuda de echo .
Se você precisar gravar isso em um arquivo de log:
npm run start >/some/path/log.txt 2>&1
Isso redirecionaria a saída padrão e quaisquer mensagens de diagnóstico para o caminho do arquivo de log fornecido.