Saya menggunakan Bitvise SSH Server pada mesin Windows saya untuk akses jarak jauh. Shell login adalah ZSH, dan saya menggunakan Oh My Zsh dengannya. Namun, saya juga sudah mencoba BASH dan mendapatkan masalah yang sama. Oleh karena itu saya kira masalah ini adalah dengan Bitvise SSH Server, bukan cangkang Cygwin saya atau emulator terminal sisi klien.
Masalahnya dapat dilihat pada prompt ZSH saya. Selama sesi SSH saya melewati Server SSH Bitvise ini, akan ada beberapa ruang tambahan di prompt. Silakan lihat tangkapan layar:
Jendela ini adalah MinTTY pada mesin Windows itu. Ketika saya membukanya, Anda bisa melihat hanya ada satu spasi tambahan ~
(sebelum saya mengetik ssh 127.0.0.1
). Namun begitu saya SSH-ed ke mesin yang sama, ada dua spasi setelah ~
di prompt. Juga, jika saya melakukan sesi SSH lain (ke tiger
mesin) dalam sesi Bitvise SSH, prompt yang kedua juga memiliki ruang ekstra (tanda garis bawah berwarna merah). Namun jika saya keluar dari sesi Bitvise dan SSH ke tiger
, secara langsung, promptnya adalah normal (prompt yang digarisbawahi hijau).
Saya mengamati hal yang sama ketika menghubungkan dari beberapa mesin jarak jauh (menggunakan gnome-terminal
atau xfce4-terminal
sebagai emulator terminal) ke mesin Windows itu.
Oleh karena itu, kesimpulan saya adalah, emulator terminal tidak dapat disalahkan untuk ini. Cygwin dan ZSH-nya juga tidak dapat disalahkan, karena semuanya terlihat baik selama saya tidak melalui Bitvise.
Asumsi saya adalah ada beberapa karakter khusus yang didefinisikan dalam tema Oh My Zsh yang tidak diproses dengan benar ketika melewati Bitvise. Namun saya tidak dapat menemukan apa itu sebenarnya. Tema Oh My Zsh terlihat bagus secara lokal tanpa koneksi Bitvise SSH, dan mereka terlihat bagus di semua mesin Linux yang saya miliki. Karena itu saya pikir itu harus sesuatu dengan Bitvise.
Seperti yang disarankan dalam komentar, saya berlari set
di kedua lingkungan, dan mendapat keluaran dibuang ke dua file teks: bitvise.txt dan local.txt . Sekarang masalah terbesar adalah saya tidak bisa membandingkannya menggunakan diff
karena diff
mereka mengklaim file biner (dan mereka berbeda). Saya tidak yakin apakah ini ada hubungannya dengan ruang-ruang aneh.
Memaksa LANG
pada diff
tidak membantu.
$ diff -uN bitvise.txt local.txt
Binary files bitvise.txt and local.txt differ
$ LANG=en_US.UTF-8 diff -uN bitvise.txt local.txt
Binary files bitvise.txt and local.txt differ
$ LANG=C diff -uN bitvise.txt local.txt
Binary files bitvise.txt and local.txt differ
Dua file diunggah di sini: https://drive.google.com/open?id=0B6Pxoys5MF0Bc1d6QUMweUkybHc
Menguji beberapa TERM
pengaturan berbeda ... Tampaknya tidak melakukan sesuatu yang baik. Pengaturan TERM=linux
menghasilkan sama dengan xterm
.
Diperbarui pada 5/23/16
Masalahnya tampaknya lebih sulit dari yang saya harapkan. Saya menemukan folder "C: \ Program Files \ Bitvise SSH Server \ TermInfo" yang berisi file info terminal. Saya mengganti file di folder itu dengan file serupa yang saya salin dari mesin Ubuntu normal, tetapi tidak membantu. Saya juga mencoba info istilah "cygwin" yang diinstal dengan Cygwin, tidak beruntung ... Sebenarnya file "cygwin" yang menyertai Cygwin sama dengan yang ada pada Ubuntu ...
Saya kehabisan ide sekarang.
Ketika saya SSH ke dalam Bitvise SSH Server, saya bisa lakukan exec /bin/bash
untuk mengganti sesi saat ini dengan Bash. Namun dalam Bash itu, jika saya SSH ke beberapa mesin Linux lain yang menggunakan Zsh dan Oh My Zsh, masalah yang sama tetap ada.
set > local.txt
secara lokal dan melakukan set > bitvise.txt
sesi SSH untuk localhost
. Sekarang saya mendapatkan dua file, keduanya sangat besar dan tidak persis sama. Namun diff
mengklaim mereka adalah file biner sehingga tidak menghasilkan perbedaan dalam garis ... Masih mencoba mencari cara untuk ini ...
man iconv
untuk konversi
diff
(atau terlalu banyak perbedaan)?
LANG=C diff -uN file1 file2
atauLANG=en_US.UTF-8 diff -uN file1 file2
set
untuk membuang pengaturan penuh dalam beberapa kasus. Mungkin Anda dapat menemukan perbedaan