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

1848
laggingreflex

Я хотел выполнить команду в удаленной оболочке в ее интерактивной среде, чтобы она .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 -ttGit Bash?

-1

1 ответ на вопрос

2
Kenster

Сообщение «Псевдо-терминал не будет выделено» носит исключительно информационный характер. Если используемая команда не нуждается в терминале, вам лучше запустить 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 
Большое спасибо за это. Я продолжал входить в это странное состояние после `git add -i`. Понятия не имел, что происходит. leesio 7 лет назад 0

Похожие вопросы