Більше не можна набирати Git bash після повернення з ssh -tt


0

Я хотів виконати команду у віддаленій оболонці у її інтерактивному середовищі, щоб змусити її .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?

Відповіді:


2

Повідомлення "Псевдотермінал не буде виділено" є лише інформаційним. Якщо команда, яку ви виконуєте, не потребує терміналу, вам краще запустити ssh з -Tможливістю вимкнути розподіл PTY та закрити повідомлення.

Це здається, що ваш місцевий TTY з якихось причин залишається у відвертому стані. Запуск stty saneповинен повернути термінал у придатний стан. Я знаю, ви сказали, що не можете вводити текст, але ви можете спробувати зробити це:

  1. Введіть Control-Q (тобто натисніть клавішу "Control" і натисніть "Q"), щоб скасувати будь-яке призупинення Ctrl-S / Ctrl-Q, яке може бути на місці
  2. Тип Control-J. Це буквальний символ нового рядка, щоб переконатися, що оболонка готова прочитати новий командний рядок.
  3. наберіть "stty sane", потім Control-J знову. Спробуйте, навіть якщо те, що ви вводите, не відображається на екрані.

Якщо це не спрацює, ядерним варіантом буде запустити "stty sne" на застряглий 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.