No caso do seu script específico, nem Myscript nem command D será executado. Você definiu uma função C , mas não está chamando.
A ordem de execução é:
-
command Bé executado até a conclusão. -
command Eé executado até a conclusão.
Se você chamasse C , ele executaria Myscript até a conclusão e, em seguida, executaria command D na conclusão.
Tudo o que você invoca em um script de shell é executado na ordem em que é visto e é executado até a conclusão. Se você precisar executar algo em paralelo com outra coisa, deverá usar o controle de tarefa (confira como o caractere% am_and & é usado para colocar tarefas em segundo plano). Um exemplo rápido:
A
B
Executa A até terminar, depois executa B até terminar. O script termina.
A &
B
Executa A no plano de fundo e, em seguida, executa B em primeiro plano. O script de shell termina quando B foi concluído. A ainda pode estar em execução.
A &
B &
Executa A no segundo plano e, em seguida (sem esperar que A seja concluído), executa B no segundo plano. O script termina imediatamente.
A &
B &
wait
Executa A no segundo plano e, em seguida (sem esperar que A seja concluído), executa B no segundo plano. O script aguarda que A e B sejam concluídos antes de sair.