Bunun ne shopt -s histappend anlama geldiğini öğrendikten sonra , çok akıllıca bir ayar gibi görünüyor ve varsayılan olmadığına şaşırdım. Neden birileri her bir kabuk çıkışındaki geçmişini silmek istesin ki?
Bunun ne shopt -s histappend anlama geldiğini öğrendikten sonra , çok akıllıca bir ayar gibi görünüyor ve varsayılan olmadığına şaşırdım. Neden birileri her bir kabuk çıkışındaki geçmişini silmek istesin ki?
Yanıtlar:
Peki, histappendayarlanmadığında, bu, her kabuk çıkışında tarihin silindiği anlamına gelmez. histappendBash olmadan başlangıçta hist dosyasını belleğe okur - işlem sırasında yeni girişler eklenir - ve kabuk çıkışında son HISTSIZE satırları eklenmeden geçmiş dosyaya yazılır, yani önceki içeriği değiştirir.
Örneğin, hist dosyası 400 giriş içeriyorsa, bash çalışma zamanı sırasında 10 yeni giriş eklenir - hist boyutu 500 olarak ayarlanır, sonra yeni hist dosyası 410 giriş içerir.
Bu davranış yalnızca paralel olarak daha fazla bash örneği kullanıyorsanız sorunludur. Bu durumda, geçmiş dosyası yalnızca son çıkmakta olan kabuğun içeriğini içerir.
Bundan bağımsız: Gizlilik nedenlerinden dolayı tarihlerini kabuk çıkışında silmek isteyen bazı insanlar var.
histappendilişkin herhangi bir permütasyonun nasıl bir ilgisi var root? Yine, sadece yazılı olanı etkiler , eğer değilse .
histappendyanı sıra HISTCONTROL=ignoredups:erasedups:ignorespaceçoğu insan için iyi bir varsayılan gibi görünüyor.
histappendbenim için etkili olması anlamsız mıdır ? HISTFILESIZE=HISTSIZE=
histappendeşzamanlı olarak çalışan mermilerden yeni bir geçmiş olmadan o zaman kaybolacak ve sadece son çıkan kabuğun girdileri kaydedilecekti. BT, HISTSIZE=negatif ile aynı etkiye sahip olup olmadığını bilmiyorum HISTSIZE.
Tarihsel uyumluluk için sanırım. Bu histappendseçenek bash 2.0'a kadar mevcut değildi.
histappend.
bash'saf' veya dağıtılmamış bir ürün.bashrc. İlki için, @Gilles muhtemelen doğrudur. İkinci anlamda-s histappendise 2008 yılından bu yana, örneğin, Debian üzerinde varsayılan: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459