Quando um script é executado, cada linha é executada uma por vez e cada uma deve ser concluída antes que a próxima seja iniciada. O caractere &
após um comando inicia o comando em segundo plano, permitindo que a próxima instrução seja executada imediatamente, sem esperar que a anterior seja concluída.
Assim, seu script está iniciando uma instância de conky
em segundo plano usando o arquivo config1 e, em seguida, iniciando outra instância de conky
em primeiro plano usando o arquivo config2 e aguarda a conclusão dessa instância antes de processar a próxima exit
linha. Se você alterar seu script para ter um &
após cada comando conky
desta forma ...
#!/bin/bash
conky -c ~/Conky/scripts/config1 &
conky -c ~/Conky/scripts/config2 &
exit
... não esperará que eles terminem antes de processar o comando exit
.
Como John e Eliah afirmaram, &&
é usado para encadear dois comandos juntos com o segundo executando apenas se o primeiro for concluído com êxito. Isso geralmente é feito a partir da linha de comando, em oposição a um script. Isso explica porque depois que você fez essa mudança, a segunda instância de conky nunca foi lançada. O primeiro nunca terminou para que o segundo pudesse começar.
Espero que isso elimine algumas coisas.