Tidak dapat mengetik lagi di Git bash setelah kembali dari ssh -tt


0

Saya ingin menjalankan perintah dalam sebuah shell jauh di lingkungan interaktifnya, sehingga membuatnya memuat remote saya .bash_profileterlebih dahulu sebelum menjalankan perintah.

Ini sangat bagus:

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

Tapi itu memberi kesalahan

Pseudo-terminal tidak akan dialokasikan karena stdin bukan terminal.

Saya tidak tahu apakah ini masalah karena perintah di atas berfungsi dengan baik untuk tujuan saya, tetapi saya masih mencari solusi untuk menghilangkannya dan saya menemukan

  • ssh -t -t [2]

Menggabungkan mereka Anda dapatkan echo "command" | ssh -tt user@remote_hostyang bekerja sangat baik.

Tapi untuk beberapa alasan aneh pada Git bash, setelah kembali dari menjalankan perintah, saya tidak bisa mengetik lagi. Saya mengujinya di Cygwin tempat kerjanya bagus, jadi hanya Git bash yang memiliki masalah ini.

Saya mencoba untuk mengetik exitkalau-kalau itu masih terlihat terjebak dalam shell jarak jauh tetapi tidak ada yang berhasil.

Ada ide apa yang mungkin menjadi masalah dengan melakukan ssh -ttdi Git bash?

Jawaban:


2

Pesan "Pseudo-terminal tidak akan dialokasikan" hanya bersifat informasi. Jika perintah yang Anda jalankan tidak membutuhkan terminal, Anda akan lebih baik menjalankan ssh dengan -Topsi untuk menonaktifkan alokasi PTY dan menutup pesan.

Sepertinya TTY lokal Anda dibiarkan dalam keadaan aneh karena alasan tertentu. Menjalankan stty saneharus mengatur ulang terminal ke status yang dapat digunakan. Saya tahu Anda bilang Anda tidak bisa mengetik, tetapi Anda bisa mencoba melakukan ini:

  1. Ketik Control-Q (yaitu, tahan tombol "Control" Anda dan tekan "Q") untuk membatalkan semua penundaan Ctrl-S / Ctrl-Q yang mungkin ada
  2. Ketik Control-J. Ini adalah karakter baris baru literal untuk memastikan shell siap membaca baris perintah baru.
  3. ketik "stty sane" lalu Control-J lagi. Cobalah meskipun apa yang Anda ketikkan tidak muncul di layar.

Jika itu tidak berhasil, opsi nuklir adalah menjalankan "stty waras" pada TTY yang macet dari terminal lain.

  1. Buka jendela terminal lain.
  2. Gunakan "ps" untuk mencari tahu apa PTY sesi macet aktif.
  3. Jalankan stty sanedengan input yang dialihkan dari PTY.

Misalnya, di 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

Terima kasih banyak atas ini. Saya terus mengalami keanehan ini setelahnya git add -i. Tidak tahu apa yang sedang terjadi.
leesio
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.