Больше не могу печатать на Git bash после возвращения из ssh -tt

Я хотел выполнить команду в удаленной оболочке в ее интерактивной среде, чтобы она загрузила мой удаленный .bash_profile там, прежде чем выполнять команду.

Это прекрасно работает:

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

Но это дает ошибку

Псевдо-терминал не будет выделен, потому что stdin не является терминалом.

Я не знаю, является ли это проблемой, потому что приведенная выше команда отлично работает для моей цели, но все же я искал решение, чтобы она исчезла, и я нашел

Объединяя их, вы получаете echo "command" | ssh -tt user@remote_host который отлично работает

Но по какой-то странной причине в Git bash, после возвращения из выполнения команды я больше не могу печатать. Я проверил его на Cygwin, где он отлично работает, поэтому эта проблема возникает только в Git bash.

Я пытался набрать exit в случае, если он все еще незаметно застрял в этой удаленной оболочке, но ничего не работает.

Любые идеи, что может быть проблемой с выполнением ssh -tt на Git Bash?

1 ответ

Сообщение "Псевдо-терминал не будет выделено" носит исключительно информационный характер. Если команда, которую вы запускаете, не нуждается в терминале, вам лучше запустить ssh с -T возможность отключить выделение PTY и закрыть сообщение.

Похоже, ваш местный TTY по какой-то причине находится в странном состоянии. Бег stty sane должен сбросить терминал в работоспособное состояние. Я знаю, что вы сказали, что не можете печатать, но вы можете попробовать сделать это:

  1. Введите Control-Q (то есть, удерживая нажатой клавишу "Control" и нажав "Q"), чтобы отменить любую приостановку Ctrl-S/Ctrl-Q, которая может быть на месте
  2. Тип Control-J. Это буквальный символ новой строки, чтобы убедиться, что оболочка готова прочитать новую командную строку.
  3. наберите "stty sane", затем снова нажмите Control-J. Попробуйте, даже если то, что вы печатаете, не появляется на экране.

Если это не сработает, ядерным вариантом будет запуск "stty sane" на зависшем TTY из другого терминала.

  1. Откройте другое окно терминала.
  2. Используйте "ps", чтобы выяснить, в каком PTY находится застрявший сеанс.
  3. Бежать stty sane с входом, перенаправленным из PTY.

Например, в 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
Другие вопросы по тегам