A parte [1]+ Done ...
da sua saída parece vir do controle de trabalho da Bash. Você geralmente obtém quando um comando que você iniciou em background termina, assim:
$ sleep 1 &
[1] 20931
$
[1]+ Done sleep 1
Uma solução para suprimir essas saídas de controle de tarefas é iniciar o comando background em um subshell, colocando-o entre parênteses:
$ ( sleep 1 &)
$
Eu não sei dizer se isso é apropriado na sua situação, porque você ainda não mostrou seus comandos reais e essa abordagem vem com algumas desvantagens:
O trabalho não pode mais ser controlado (por exemplo, jobs
, bg
, fg
commands), mas como ele é executado a partir de um script de inicialização, presumo que ele não seria destinado de qualquer maneira.
Se o comando estivesse modificando seu ambiente (por exemplo, configurando variáveis ou alterando o diretório de trabalho), isso afetaria apenas a subshell e não mais o restante do script.
Outra maneira é fazer com que o shell esqueça o trabalho depois que ele começou a usar disown
, como:
$ sleep 1 & disown
[1] 27248
$
Dessa forma, no entanto, ele também não será mais encerrado quando o shell sair, portanto, ele poderá continuar sendo executado após o logout do usuário, se eu entendi isso corretamente (corrija-me, caso contrário).
Fontes e outras leituras: