從 ssh -tt 返回後無法再在 Git bash 上輸入

從 ssh -tt 返回後無法再在 Git bash 上輸入

我想在遠端 shell 的互動式環境中執行命令,以便.bash_profile在執行命令之前載入我的遠端 shell。

這很好用:

  • 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以防它仍然隱形地卡在遠端 shell 中,但沒有任何作用。

ssh -tt您知道在 Git bash 上執行操作可能會出現什麼問題嗎?

答案1

“偽終端不會被分配”訊息僅供參考。如果您執行的命令不需要終端,您最好執行 ssh,並選擇-T停用 PTY 分配並關閉訊息。

聽起來您的本地 TTY 由於某種原因處於奇怪的狀態。運行stty sane應該將終端重置為可用狀態。我知道你說你不能打字,但你可以嘗試這樣做:

  1. 鍵入 Control-Q(即按住“Control”鍵並按“Q”)以取消可能存在的任何 Ctrl-S/Ctrl-Q 暫停
  2. 類型控制-J。這是一個換行符,用於確保 shell 準備好讀取新的命令列。
  3. 輸入“stty sane”,然後再次輸入 Control-J。即使您鍵入的內容沒有出現在螢幕上,也請嘗試一下。

如果這不起作用,核心選項是從另一個終端在卡住的 TTY 上執行“stty sane”。

  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

相關內容