Beberapa contoh bash mengubah histori perintah ketika Anda menggunakan kembali dan mengedit perintah sebelumnya, yang lain tampaknya tidak. Saya telah mencari dan mencari tetapi tidak dapat menemukan apa pun yang mengatakan bagaimana mencegah perintah dalam sejarah agar tidak dimodifikasi ketika mereka digunakan kembali dan diedit.
Ada pertanyaan seperti ini , tetapi yang sepertinya mengatakan bagaimana mengatasi sejarah yang sedang diedit. Saya baru-baru ini menemukan sebuah instance dari bash yang mengedit riwayat ketika Anda menggunakan kembali perintah - semua shell bash sebelumnya yang saya gunakan telah (sejauh yang saya perhatikan) telah dikonfigurasi untuk tidak mengubah riwayat ketika Anda menggunakan kembali dan edit sebuah perintah. (Mungkin aku hanya belum memperhatikan sejarah cangkangku selama 15 tahun terakhir atau lebih ...)
Jadi itu mungkin pertanyaan terbaik: BISAKAH saya bisa mengatakan kepada bash TIDAK PERNAH untuk memodifikasi sejarah - dan jika demikian, bagaimana?
sumber
history -p
untuk melakukan ekspansi riwayat tanpa memengaruhi file riwayat. Anda dapat melakukannyahistory -s
untuk melakukan hal yang sama dan menambahkan ke riwayat tanpa eksekusi. Anda bisa lakukanHISTIGNORE='start of a command I never want in history.*:command2.*'
untuk menjaga perintah tertentu dari sejarah.set revert-all-at-newline on
dalam pertanyaan yang Anda tautkan menyelesaikan masalah Anda? Bisakah Anda menunjukkan cara mereproduksi masalah? Perhatikan bahwa Anda juga dapat menggunakanzsh
perilaku yang lebih sesuai dengan yang Anda inginkan.history -p
adalah sesuatu yang harus saya lakukan untuk setiap perintah yang ingin saya gunakan kembali - apakah itu benar? Jika demikian, itu tidak cukup yang saya cari. Seperti yang saya sebutkan, saya telah menggunakan contoh bash yang tidak pernah memodifikasi histori ketika sebuah perintah digunakan kembali dan diedit.revert-all-at-newline
cukup yang saya butuhkan. Jika saya mengedit perintah dan menekan CTRL-C untuk membatalkannya, saya juga tidak ingin itu mempengaruhi sejarah. Saya belum pernah sebelumnya mengkonfigurasi bash untuk tidak mengubah sejarah, yang merupakan bagian dari alasan saya bingung mengapa kadang-kadang instalasi baru berperilaku dalam satu cara dan kadang-kadang di lain. Ngomong-ngomong, pada sebuah instance yang tidak mengedit histori pada reuse perintah, sebuahbind -V | grep revert
mengindikasikan yangrevert-all-at-newline
diatur ke 'off'.bash
. Ini semua tentang readline. Ada implementasireadline
perpustakaan yang berbeda , dan juga memiliki set pengaturan sendiri (BANYAK dari mereka) dan file konfigurasinya sendiri. Saya tidak yakin persis apakah ini merupakan pengaturan atau hanya perbedaan implementasi, tetapi Anda harus mencari dalam dokumentasi yang berhubungan dengan readline, bukan bash.Jawaban:
Ternyata
revert-all-at-newline
adalah jawabannya. Saya perlu memasukkanset revert-all-at-newline on
dalam~/.inputrc
file saya , karena menggunakanset
perintah di bash prompt tidak berpengaruh. (Kemudian, tentu saja, saya harus memulai shell baru.)Juga, saya menemukan yang
~/.inputrc
dimuat bukan/etc/inputrc
jika ada, yang berarti bahwa setiap default yang ditentukan dalam yang terakhir tidak lagi aktif ketika Anda membuat~/.inputrc
. Untuk memperbaiki ini, mulailah~/.inputrc
dengan$include /etc/inputrc
.Terima kasih kepada @ StéphaneChazelas karena mengarahkan saya ke arah yang benar.
sumber
Di ~ / .bashrc Anda dapat menambahkan
sumber
histappend
aktif tetapi riwayat saya masih menunjukkan pengeditan untuk perintah sebelumnya.