Sem &
, o script que você está executando remotamente diz "mude para /root/myDir
, execute gedit
e aguarde a saída". A variante com &
diz para não esperar que gedit
saia. De qualquer forma, o shell é encerrado depois de executado o último comando no script.
Se você deseja executar um script e, em seguida, executar mais comandos que você digita interativamente, é necessário executar um shell interativo no final.
ssh -Xt [email protected] 'cd /root/myDir && gedit a.c b.c; exec bash'
A opção -t
diz ao SSH para configurar um terminal virtual no servidor; por padrão, não faz isso quando você passa um comando remoto para executar. exec bash
no final diz ao shell para se substituir por uma nova instância do bash, que será um shell interativo (mostrando um prompt, escutando seus comandos, etc.), já que sua entrada está vindo de um terminal.