Primeira coisa: para executar um comando em segundo plano, você o digita seguido por um único &
, o duplo &&
é um operador lógico e (assim como ||
é lógico ou).
A execução de command1 && command2
devolve lógica verdadeira (ou seja, código de retorno 0, o que significa "nenhum erro") se ambos os comandos retornarem sem erro.
Como um efeito colateral muito usado, o comando2 não é executado quando o comando1 retornou um erro, pois o resultado da lógica e da operação não pode ser verdadeiro se o primeiro argumento já for conhecido como falso.
command1 ; command2 & command3
Os comandos são executados da esquerda para a direita: primeiro command1
é executado, aguardado até terminar, então command2
é executado em segundo plano (como é seguido por &
) e imediatamente seguido por command3
.
Você pode usar chaves para permitir que uma sequência de comandos seja executada em segundo plano assim:
{ command1 ; command2 ; } & command3