2015-09-05 24 views
31

OS X El Capitan (10.11 Beta) is Bash sessions (Terminal sessions)'da görünüşte yeni bir özellik. Şimdi tarih dosyaları olan bir ~/.bash_sessions dizini var ve benim HISTFILE ve HISTIGNORE envar'lar geçersiz kılılıyor. Tüm bu işlevselliği nasıl devre dışı bırakabilirim?OS X El Capitan'daki Bash oturumlarını nasıl devre dışı bırakabilirim?

+1

“…… HISTIGNORE envarlar geçersiz kılılıyor.” Emin misiniz? '/ etc/bashrc_Apple_Terminal'' HISTIGNORE' değiştirmez (hiç referans alınmamıştır). –

+1

* Eğer 'heygeci' kabuk seçeneği etkinleştirilmişse, oturum başına geçmiş varsayılan olarak devre dışı bırakılmıştır * – yckart

cevap

40

El ile yeni bir Bash oturumu başlatırsanız (örn. bash -xl), oturum açmada neyin çalıştığını görebilirsiniz.

Sen çıktıda aşağıdaki satırı görürsünüz:

.... 
+++ '[' '!' -e /Users/username/.bash_sessions_disable ']' 

Bu işlevi devre dışı bırakmak için ev dizininde bir .bash_sessions_disable dosyası oluşturabilirsiniz.

+0

Daha öncekinden daha fazla geçmişe erişmeyi seviyorum, ancak kendi başına herhangi bir sınırlama getiriyor mu? 10.11'i yüklediğinden beri her Terminal için iki veya üç dosyam var gibi görünüyor. Ayda sadece iki megabayt, ancak yine de .... – WGroleau

+0

@WGroleau: Bu özellik tarihin miktarı ile ilgili değil, her terminal oturumu için ayrı komut geçmişlerini depolamakla ilgili, böylece Özgeçmiş ile terminalleri geri yüklerseniz tarihler ayrı kalır - başlangıçta onları oluşturduğunuzda oldukları gibi. Normal "HISTSIZE" ve "HISTFILESIZE" kabuk değişkenleri hala geçerlidir. Aslında, bunlardan birini veya her ikisini de daha büyük yapmanızı öneririz, çünkü her oturum da geçmişini global '~/.bash_history' dosyasına ekler, böylece geçmişinizin tümü yeni terminallerde kullanılabilir. Daha fazla ayrıntı için '/ etc/bashrc_Apple_Terminal' deki yorumlara bakın. –

+0

@WGroleau: Ayrıca, günde bir kez olmak üzere iki haftadan eski oturum dosyalarını da otomatik olarak siler. –

22

Bu davranış, /etc/bashrc_Apple_Terminal numaralı telefondan tanımlanmıştır. Ne yaptığını ve nasıl özelleştirileceğini açıklayan dokümantasyon yorumları içerir.

burada açıklandığı gibi, sizin ~/.bashrc komut SHELL_SESSION_HISTORY=0 ayarlayarak başına terminal oturumu komut geçmişi özelliğini devre dışı bırakabilirsiniz:

Tek bir geçmişi bu davranışı devre dışı bırakmak ve paylaşabilir 0'a SHELL_SESSION_HISTORY ayarlayarak tarafından çalışan kabuklar arasında yeni komutları paylaşmak isteyen her bir ortak kullanıcı özelleştirmesi vardır ve her bir komutta geçmişi manipüle ederler ve genellikle 'shopt -s histappend'; Bu nedenle, eğer histappend kabuk seçeneği etkinleştirilmişse, oturum başına geçmiş varsayılan olarak devre dışıdır. Sen açıkça, sen ~/.bash_sessions_disable oluşturarak tüm oturum durumu restorasyon mekanizmasını devre dışı bırakabilir rağmen, bu oturum başına komut geçmişi özelliğini devre dışı bırakmak için sadece gerekli olmadığına 1.

Not SHELL_SESSION_HISTORY ayarlayarak aktive edebilir ve tavsiye edilmez.

+1

Güzel Bul! '/ Etc/bashrc_Apple_Terminal' üzerinden bakmak bana, özelliği tamamen engellemenin tek yolunun' '$ HOME/.bash_sessions_disable'' (yani, bu dosya olmadan yine de oturum dizini oluşturacak) olarak ayarlanacağına inanmamı sağlar. – Whymarrh

+0

@Whymarrh Cevabımın bir kısmını mı özledin? Bu dosyanın oturum durumu mekanizmasını devre dışı bıraktığını söyledim, ancak yapmak istediğiniz tek şey, oturum başına kabuk komut geçmişini devre dışı bırakmaksa, bu fazla mesai. –

+1

Son satırın yanlış olduğunu fark ettim, evet. Bunun için üzgünüm. – Whymarrh

6

Özetle, bunun Apple'ın Resume özelliği ile ilgisi vardır. Bu özellik etkinleştirildiğinde, bir uygulamayı kapattığınızda veya yeniden başlattığınızda, uygulama açıldığında, daha önce açılmış olan pencereleri açar.

  1. $HOME/.bash_sessions_disable zorunluluk
  2. System Preferences/General/Close Windows when quitting an app kontrol edilmemelidir mevcut olmayabilir: Terminal ile ilgili olarak

    üç şey bunun olması için yerde olması gerekir.

  3. Yeniden başlatırken, Reopen windows'u seçin.

Terminali yeniden açtığınızda, aynı ekran konumlarında daha önce sahip olduğunuz pencereleri ve sekmeleri yeniden açar. Ayrıca, Terminal/Preferences/your-window-type/Windows/Resume/Restore-text-when-reopening-windows'u işaretlediyseniz, her ekranda metni geri yükler.Aşağıdaki koşullar

Nihayet

ve bu OP'ın soruya özellikle ilgilidir, her pencerede/sekmede tarihini geri yükler tutarsan:

  1. SHELL_SESSION_HISTORY ayarlanmazsa veya değil 1
  2. shopt histappend ayarlı olduğu SHELL_SESSION_HISTORY açıkçaolarak ayarlanırsa
  3. HISTTIMEFORMAT

ayarlı değil set, son iki gereksinim geçersiz kılınır, yani shopt histappend veya HISTTIMEFORMAT ayarlanmış olabilir. Ayrıca, HISTSIZE ve HISTFILESIZE değişkenlerine de dikkat edilmesi gerekmektedir. Çok büyük veya çok küçük olmamalılar ve bazıları Apple'ın varsayılan değerlerini almaları için onları üzümsüz bırakmalarını tavsiye ediyorlar.

İlgili konular