Nach der Rückkehr von ssh -tt kann kein Git-bash mehr eingegeben werden

1876
laggingreflex

Ich wollte einen Befehl in einer Remote-Shell in seiner interaktiven Umgebung .bash_profileausführen, damit er meine Fernbedienung zuerst dort laden kann, bevor der Befehl ausgeführt wird.

Das funktioniert großartig:

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

Aber es gibt einen Fehler

Pseudo-Terminal wird nicht zugewiesen, da stdin kein Terminal ist.

Ich weiß nicht, ob dies ein Problem ist, weil der obige Befehl für meine Zwecke gut funktioniert, aber ich habe immer noch nach einer Lösung gesucht, um das Problem zu beheben, und habe es gefunden

  • ssh -t -t [2]

Wenn man sie kombiniert, bekommt man echo "command" | ssh -tt user@remote_hostwas toll funktioniert.

Aber aus irgendeinem seltsamen Grund bei Git bash kann ich nach der Ausführung des Befehls nicht mehr tippen. Ich habe es auf Cygwin getestet, wo es großartig funktioniert, also hat nur Git-Bash dieses Problem.

Ich habe versucht zu tippen, exitfalls es immer noch unsichtbar in dieser Remote-Shell steckt, aber nichts funktioniert.

Irgendwelche Ideen, was könnte das Problem mit ssh -ttGit bash sein?

-1

1 Antwort auf die Frage

2
Kenster

Die Nachricht "Pseudo-Terminal wird nicht zugewiesen" dient nur zur Information. Wenn der Befehl, den Sie ausführen, kein Terminal benötigt, sollten Sie ssh lieber mit der -TOption zum Deaktivieren der PTY-Zuweisung und zum Schließen der Nachricht ausführen.

Es klingt, als würde Ihr lokales TTY aus irgendeinem Grund in einem komischen Zustand gelassen. Beim Ausführen stty sanesollte das Terminal in einen verwendbaren Zustand zurückgesetzt werden. Ich weiß, du hast gesagt, du kannst nicht tippen, aber du könntest es versuchen:

  1. Geben Sie Control-Q ein (d. H. Halten Sie die "Control" -Taste gedrückt und drücken Sie "Q"), um einen eventuell vorhandenen Ctrl-S / Ctrl-Q-Suspend abzubrechen
  2. Geben Sie Control-J ein. Dies ist ein literales Newline-Zeichen, um sicherzustellen, dass die Shell zum Lesen einer neuen Befehlszeile bereit ist.
  3. Geben Sie "stty sane" und dann erneut Control-J ein. Probieren Sie es auch aus, wenn das, was Sie eingeben, nicht auf dem Bildschirm angezeigt wird.

Wenn das nicht funktioniert, wäre die nukleare Option, "stty sane" auf dem festsitzenden TTY von einem anderen Terminal aus auszuführen.

  1. Öffnen Sie ein anderes Terminalfenster.
  2. Verwenden Sie "ps", um herauszufinden, in welchem ​​PTY die steckengebliebene Sitzung läuft.
  3. Führen Sie stty sanemit der PTY umgeleitet Eingang.

Zum Beispiel unter 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 
Vielen Dank dafür. Ich kam nach "git add -i" in diesen seltsamen Zustand. Hatte keine Ahnung, was los war. leesio vor 6 Jahren 0