Saya baru-baru ini menginstal Ubuntu dan ketika saya menjalankan sh di Terminal, tombol panah saya tidak berfungsi sehingga saya tidak bisa melihat riwayat panggilan saya atau mengedit apa pun yang saya ketikkan. Itu hanya muncul sebagai karakter aneh seperti ^[[A
.
Shell login adalah bash dan berfungsi dengan baik tetapi begitu saya beralih ke sh, mereka tidak berfungsi.
Bagaimana saya bisa memperbaikinya?
sh
? Tentunya alasan mengapa dia melakukan itu tidak relevan dengan fakta bahwa itu bermasalah.Jawaban:
The
/bin/sh
(dash) shell adalah POSIX compliant, mengurangi shell fungsi menjadi lebih efisien (lebih kecil) untuk booting sistem. Sebagai bagian dari itu, riwayat dan pengeditan baris perintah lanjutan tidak termasuk. Itu lebih tepat untuk skrip POSIX yang ketat daripada sebagai shell interaktif. Idenya adalah bahwa shell 'login' akan bash secara default, tetapi sistem boot akan menggunakan tanda hubung. Halaman manual di Ubuntu 11.04 menunjukkan bahwa dasbor memiliki histori dan pengeditan baris perintah, tetapi program tidak memiliki fitur-fitur ini. Lihatlah ukuran executable dasar.Cobalah untuk terbiasa berlari
$SHELL
ataubash
tidak hanyash
.sumber
Dalam hal
/bin/sh
ini Dash , itu harus dikonfigurasi--with-libedit
sebelum kompilasi. Kalau tidak, Anda masih dapat berjalanset -o vi
di shell tetapi tidak melakukan sesuatu yang bermanfaat.sumber
sh
tidak memiliki riwayat. Setidaknya, milik saya tidak:sumber
$FCEDIT
atau$HISTFILE
atau bahkan adilfc
? Saya pikir setidaknya mereka wajib - dan rendering dari$PS1
\!
. Saya bisa salah tentang spec POSIX - tetapi mereka semua bekerjadash
dan memiliki selama bertahun-tahun.fc
,$FCEDIT
,$HISTFILE
,$PS1
adalah opsional di POSIX (ditandai dengan UP untuk "User Portabilitas"). Thesh
sistem conformant Unix akan memiliki orang-orang seperti UP diperlukan untuk Unix kesesuaian (antara lain Unix juga mensyaratkan bahwaecho -e
output-e<LF>
). Tetapi jika sistem / shell hanya mengklaim kesesuaian POSIX, maka itu tidak perlu untuk mengimplementasikannya. Untuk Debianash
, mungkin diaktifkan pada waktu kompilasi dengan --with-libedit seperti yang telah disebutkan, tetapi setidaknya Debian tidak.dash
saya menggunakan sebagai paket untuk Arch secara drastis berbeda dari Debian yang saya ambil. Itu info berharga. Aneh itu tidak diman
.