A ordem dos comandos assíncronos não é garantida e dependerá do shell e agendador do sistema operacional.
Um teste simples (executado com zsh
no Mac OSX El Capital):
for shell in bash ksh zsh mksh yash dash; do
printf '[%s]\n' "$shell"
"$shell" -c 'file=$(printf .tar.gz & printf test); echo "$file"'
done
[bash]
test.tar.gz
[ksh]
test.tar.gz
[zsh]
.tar.gztest
[mksh]
.tar.gztest
[yash]
test.tar.gz
[dash]
test.tar.gz
Na minha VM Ubuntu 14.04, todos esses shells produzem test.tar.gz
.