Não consigo mais digitar no Git bash depois de retornar do ssh -tt

Não consigo mais digitar no Git bash depois de retornar do ssh -tt

Eu queria executar um comando em um shell remoto em seu ambiente interativo, para que ele carregasse meu controle remoto .bash_profileantes de executar o comando.

Isso funciona muito bem:

  • echo "command" | ssh user@remote_host [1]

Mas dá um erro

O pseudoterminal não será alocado porque stdin não é um terminal.

Não sei se isso é um problema porque o comando acima funciona muito bem para o meu propósito, mas ainda assim procurei uma solução para fazê-lo desaparecer e encontrei

  • ssh -t -t [2]

Combinando-os você obtém echo "command" | ssh -tt user@remote_hosto que funciona muito bem.

Mas por algum motivo estranho no Git bash, depois de retornar da execução do comando, não consigo mais digitar. Eu testei no Cygwin, onde funciona muito bem, então é apenas o Git bash que tem esse problema.

Tentei digitar exitcaso ainda estivesse preso de forma invisível naquele shell remoto, mas nada funcionou.

Alguma idéia de qual pode ser o problema de fazer ssh -ttno Git bash?

Responder1

A mensagem "Pseudo-terminal não será alocado" é apenas informativa. Se o comando que você está executando não precisa de um terminal, é melhor executar o ssh com a -Topção de desabilitar a alocação de PTY e encerrar a mensagem.

Parece que seu TTY local está em um estado estranho por algum motivo. A execução stty sanedeve redefinir o terminal para um estado utilizável. Eu sei que você disse que não consegue digitar, mas você pode tentar fazer isso:

  1. Digite Control-Q (ou seja, mantenha pressionada a tecla "Control" e pressione "Q") para cancelar qualquer suspensão Ctrl-S/Ctrl-Q que possa estar em vigor
  2. Digite Control-J. Este é um caractere literal de nova linha para garantir que o shell esteja pronto para ler uma nova linha de comando.
  3. digite "stty sane" e depois Control-J novamente. Experimente mesmo que o que você digita não apareça na tela.

Se isso não funcionar, a opção nuclear seria executar "stty sane" no TTY travado de outro terminal.

  1. Abra outra janela do terminal.
  2. Use "ps" para descobrir em qual PTY está a sessão travada.
  3. Execute stty sanecom a entrada redirecionada do PTY.

Por exemplo, no Linux:

$ ps -fu jdoe
...
jdoe   2083  2080  0 22:17 pts/0    00:00:00 /bin/bash  <-- TTY is "/dev/pts/0"
$ stty sane < /dev/pts/0

informação relacionada