Mengapa ada orang yang tidak menetapkan 'histappend' di bash?

36

Setelah mencari tahu apa shopt -s histappend artinya ini , sepertinya pengaturan yang sangat waras, dan saya terkejut bahwa itu bukan default. Mengapa ada orang yang ingin menghapus riwayat mereka di setiap keluar shell?

tepang
sumber
selain dari kesalahpahaman tentang apa yang dilakukan opsi ini - dikoreksi oleh @maxscchlepzig - "default" memiliki setidaknya dua sumber: bash'murni' atau yang disediakan oleh distro .bashrc. untuk yang pertama, @Gilles mungkin benar. dalam arti yang terakhir, -s histappend adalah default pada, misalnya, Debian, sejak 2008: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459
underscore_d
3
Well, unix tidak terlalu terkenal dengan standar waras? Saya datang untuk mengharapkan default yang paling tidak ramah secara default: P (minor berlebihan)
olejorgenb

Jawaban:

34

Nah, ketika histappendtidak disetel, ini tidak berarti bahwa sejarah dihapus pada setiap keluar shell. Tanpa histappendbash membaca histfile saat startup ke dalam memori - selama operasi entri baru ditambahkan - dan saat shell keluar, baris HISTSIZE terakhir ditulis ke file histori tanpa menambahkan, yaitu mengganti konten sebelumnya.

Misalnya, jika histfile berisi 400 entri, selama bash runtime 10 entri baru ditambahkan - histsize diatur ke 500, maka histfile baru berisi 410 entri.

Perilaku ini hanya bermasalah jika Anda menggunakan lebih banyak contoh bash secara paralel. Dalam hal ini, file riwayat hanya berisi konten dari shell yang terakhir keluar.

Terlepas dari ini: Ada beberapa orang yang ingin menghapus riwayat mereka saat keluar dari shell karena alasan privasi.

maxschlepzig
sumber
Juga, karena alasan keamanan, bisa jadi ide yang bagus untuk tidak menyimpan riwayat untuk pengguna root. Fitur ini memungkinkan root untuk memiliki riwayat shell tanpa pernah disimpan ke disk.
Mei
1
+1 untuk "tidak berarti riwayat dihapus pada setiap shell yang keluar". Ini dijelaskan dengan sangat baik di tempat lain - tetapi mungkin tidak cukup ringkas untuk menjangkau beberapa pembaca, terutama dalam konteks nama opsi (OK, saya mungkin menjadi salah satu pembaca untuk sementara waktu). @ Mei, bagaimana permutasi salah satu histappendmemiliki relevansi dengan apakah rootsejarah mencapai disk? Sekali lagi, itu hanya mempengaruhi apa yang tertulis, bukan jika .
underscore_d
5
apakah ada yang menjalankan kurang dari 2 instance bash? histappenddan HISTCONTROL=ignoredups:erasedups:ignorespacesepertinya standar yang bagus untuk kebanyakan orang.
dashesy
Apakah histappendefektif tidak ada artinya jika saya memiliki HISTFILESIZE=dan HISTSIZE=untuk sejarah yang tak terbatas?
Marc.2377
1
@dashesy Saya pribadi tidak suka mengabaikan / menghapus entri duplikat. Saya telah mengaktifkan HISTTIMEFORMAT, dan saya ingin dapat kembali dan melihat ketika saya mengeluarkan perintah ... dan jika saya mengeluarkannya beberapa kali, saya ingin tahu kapan masing-masing dikeluarkan. Ini adalah pilihan pribadi, yang mereka sukai. ;)
msb
9

Untuk kompatibilitas historis, saya kira. The histappendpilihan tidak ada sampai pesta 2.0.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Apakah sejarah ditimpa setiap kali?
tshepang
3
@Tepanget: Ya, sama seperti sekarang jika Anda tidak menggunakan histappend.
Gilles 'SANGAT berhenti menjadi jahat'
seharusnya default sekarang tetapi tidak
dashesy