Layar memotong awal perintah panjang ketika diakses melalui bash history

9

Saya menggunakan versi default bash dan layar di OS X Lion.

Ketika saya dalam sesi layar dan saya gulir kembali melalui sejarah bash dan saya datang ke perintah yang cukup panjang untuk dibungkus.

Pertama-tama saya mungkin mengetik beberapa perintah:

selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/

Itu membungkus dengan benar seperti yang ditulis di atas, tetapi jika saya menekan untuk mengaksesnya melalui sejarah bash, konsol hanya menampilkan:

83279836214c0.144847759343/

Jadi prompt dan seluruh baris pertama dari perintah tidak ada, yang membuatnya sulit untuk diedit; jika saya gulir kembali ke baris pertama, itu muncul tetapi menimpa baris keluaran terakhir. Ketika saya menjalankan perintah, sisa baris pertama ditampilkan dan semuanya tampak seperti yang diharapkan:

selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/
total 1792
...
selassid@tem02:~$ 

Yang lebih ingin tahu, adalah bahwa jika menggunakan histori untuk mengakses perintah panjang tapi saya belum menjalankannya, maka gunakan C-aperintah layar apa saja , seperti beralih ke jendela lain dan kemudian kembali, atau jika saya mengklik keluar dari jendela terminal saya saat ini dan kembali ke dalamnya, perintah sejarah sekarang ditampilkan dengan benar lagi.

Saya PS1='\u@\h:\w$ 'jadi tidak ada yang sedang berjalan yang aneh di sana.

Apakah ada cara untuk menunjukkan seluruh perintah dengan benar saat menggunakan histori? Saya sudah mencoba bermain dengan pengaturan bungkus layar, tetapi mereka hanya memperburuk keadaan.

stty -a menunjukkan:

speed 9600 baud; 46 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;
selassid
sumber
Bisakah Anda melakukan echo $ TERM ketika di dalam layar dan memberikan output? Juga, jika Anda menjalankan tput; echo $ ?, apa yang Anda dapatkan?
Patrick
TERMadalah xterm-256colordan tput am; echo $?hanya memberi saya 0.
selassid
Juga, ini hanya terjadi ketika Anda menelusuri sejarah di bagian bawah jendela, jadi semua teks harus bergerak ke atas untuk menunjukkan baris kedua dari perintah dalam sejarah Anda.
selassid
Apa output dari stty -a?
Andy Smith
Saya telah menambahkannya ke bagian bawah posting. Ini cocok dengan apa yang dihasilkan ketika layar tidak berjalan.
selassid

Jawaban:

1

Berdasarkan jawaban atas komentar di atas, tampaknya Anda mengesampingkan JANGKA di salah satu skrip startup Anda. Saat berada di dalam layar, TERM Anda harus diatur ke 'layar', bukan 'xterm-256color'.

Saya akan memeriksa skrip startup shell Anda. ~ / .bashrc, / etc / bash / bashrc, dan mungkin yang lain seperti ~ / .bash_profile dan / etc / profile tergantung pada bagaimana Anda mengatur semuanya. Jika Anda melihat pengaturan TERM = "...", Anda harus menghapusnya.

Patrick
sumber
Itu benar, tetapi bahkan setelah menghapus itu, dan memeriksa bahwa TERM adalah "layar" di dalam layar masih tidak memperbaiki masalah.
selassid
Apakah Anda memiliki ~ / .inputrc atau / etc / inputrc? Jika demikian, pastikan mode gulir horizontal tidak diatur, atau disetel ke mati.
Patrick
Saya memang memiliki ~ / .inputrc, tetapi mode gulir-horizontal tidak diatur dan menonaktifkannya tidak mengubah perilaku. Saya memiliki input-meta dan output-meta on dan convert-meta off, tetapi menghapus pengaturan itu tidak mengubah perilaku.
selassid