Больше не могу печатать на Git bash после возвращения из ssh -tt
Я хотел выполнить команду в удаленной оболочке в ее интерактивной среде, чтобы она загрузила мой удаленный .bash_profile
там, прежде чем выполнять команду.
Это прекрасно работает:
echo "command" | ssh user@remote_host
[1]
Но это дает ошибку
Псевдо-терминал не будет выделен, потому что stdin не является терминалом.
Я не знаю, является ли это проблемой, потому что приведенная выше команда отлично работает для моей цели, но все же я искал решение, чтобы она исчезла, и я нашел
ssh -t -t
[2]
Объединяя их, вы получаете echo "command" | ssh -tt user@remote_host
который отлично работает
Но по какой-то странной причине в Git bash, после возвращения из выполнения команды я больше не могу печатать. Я проверил его на Cygwin, где он отлично работает, поэтому эта проблема возникает только в Git bash.
Я пытался набрать exit
в случае, если он все еще незаметно застрял в этой удаленной оболочке, но ничего не работает.
Любые идеи, что может быть проблемой с выполнением ssh -tt
на Git Bash?
1 ответ
Сообщение "Псевдо-терминал не будет выделено" носит исключительно информационный характер. Если команда, которую вы запускаете, не нуждается в терминале, вам лучше запустить ssh с -T
возможность отключить выделение PTY и закрыть сообщение.
Похоже, ваш местный TTY по какой-то причине находится в странном состоянии. Бег stty sane
должен сбросить терминал в работоспособное состояние. Я знаю, что вы сказали, что не можете печатать, но вы можете попробовать сделать это:
- Введите Control-Q (то есть, удерживая нажатой клавишу "Control" и нажав "Q"), чтобы отменить любую приостановку Ctrl-S/Ctrl-Q, которая может быть на месте
- Тип Control-J. Это буквальный символ новой строки, чтобы убедиться, что оболочка готова прочитать новую командную строку.
- наберите "stty sane", затем снова нажмите Control-J. Попробуйте, даже если то, что вы печатаете, не появляется на экране.
Если это не сработает, ядерным вариантом будет запуск "stty sane" на зависшем TTY из другого терминала.
- Откройте другое окно терминала.
- Используйте "ps", чтобы выяснить, в каком PTY находится застрявший сеанс.
- Бежать
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