Devi aggiungere alcune parentesi nella tua ultima versione --
(sleep 2 &) && (sleep 3 &)
o anche questo funziona --
(sleep 2 &) ; (sleep 3 &)
Esattamente come vuoi che funzionino? Se vuoi che vengano avviati in background ed eseguito in sequenza , faresti qualcosa del genere:
{ sleep 2; sleep 3; } &
Se vuoi sleep 3
da eseguire solo se sleep 2
riesce, allora:
sleep 2 && sleep 3 &
Se, invece, desideri che funzionino in parallelo sullo sfondo , puoi invece eseguire questa operazione:
sleep 2 & sleep 3 &
E le due tecniche potrebbero essere combinate, come:
{ sleep 2; echo first finished; } & { sleep 3; echo second finished; } &
Bash essendo bash, c'è spesso una moltitudine di tecniche diverse per portare a termine lo stesso compito, anche se a volte con sottili differenze tra loro.