Você precisa apenas de um único separador entre os comandos: ;
ou &
ou &&
etc, então tente
emacs & emacs &
Se você executar emacs &; emacs &
, você iniciará o emacs em segundo plano e, em seguida, executará ;
sem qualquer comando, por isso bash
afirma que não espera esse separador ( syntax error near unexpected token ;
).
Erro semelhante que você obterá executando apenas ;
:
bash$ > ;
bash: syntax error near unexpected token ';'
Nem todos os shell se comportam assim, por exemplo, em zsh
, você pode até fazer
zsh$> ; ; ls; ; ls&; ls&; ; ls &; ;
sem nenhum problema (mas não ;;
sem espaço intermediário), pois é um separador em si próprio, usado na instrução case
).
A outra coisa que você tentou, emacs & && emacs &
, é ainda pior, pois o segundo comando (após &&
) deve ser executado somente se o primeiro for concluído com êxito (é isso que o &&
faz). Mas, como nós executamos o primeiro comando em segundo plano, o shell não aguarda seu término, então essa condição não faz muito sentido. Mais uma vez: use apenas um único separador entre os comandos, command1 & command2
ou eventualmente command1 && command2
.