- Antes de mais nada, o processo não sai; ele pára. Existe uma diferença.
- Em segundo lugar, provavelmente acontece imediatamente; você simplesmente não é notificado até depois de pressionar Enter .
- Terceiro, quando você coloca um comando no plano de fundo (com
&), coloca a entrada padrão em um estado especial então os processos em segundo plano não podem ler do teclado. Quando você colocasudoem segundo plano, ele não consegue ler a senha, e assim fica parado. -
Corrija isso dizendo
sudopara colocar o comando em segundo plano (ao invés de dizer ao seu shell de login para colocarsudoem segundo plano):sudo -b sh -c 'app start' -
Para um comando simples como "início do aplicativo", não há necessidade óbvia de
sh -c. Experimentesudo -b 'app start'
P.S. Esta questão realmente não tem nada a ver com sh -c .
Você teria o mesmo problema com algo como
sudo sleep 42 &