Terminalin sekme / pencere başına ayrı bir geçmiş tutmasını nasıl sağlayabilirim?


13

Mac bilgisayarımı yeniden başlattığımda bilgisayar yeniden başlatıldığında tekrar orada olduğu için her sekme için arabellekleri kapatır ve kaydeder. Ancak komut geçmişi pencere / sekme başına düzgün şekilde arabelleğe alınmaz. Hepsi aynı tampon.

Ben bash aynı kullanır yüzünden olduğunu tahmin ediyorum ~/.bash_historybütün terminaller için ancak bir yolu yoktur önlemek bu iyileştirmek? Bash veya belki Terminal yapmak için bunları ayrı olarak saklayın?


Lütfen bu sunucuya bakın @ Sunucu Hatası, bunun nasıl yapılacağını açıklar.
Mutant

Yanıtlar:


7

Aşağıdaki gibi bir şey yapabilirsiniz .bashrc:

MYTTY=`tty`
HISTFILE=$HOME/.bash_history_`basename $MYTTY`

Bu, ana dizininiz gibi ayrı geçmiş dosyaları oluşturur .bash_history_ttys002. Yeni bir terminal penceresi oluşturduğunuzda, genellikle basitçe terminal pencerelerini oluşturduğunuz sıra ile belirlenecek olan tty adına karşılık gelen geçmiş dosyasını kullanır.


Çok teşekkürler! Bunu çözüldü olarak işaretleme. Her ne kadar OSX'in terminalleri nasıl yüklediğine bağlı olsa da, bulabileceğimiz en yakın şey olduğunu hissediyorum.
Robert Sköld

Bu sekme başına da mümkün mü ??
Joshua Muheim

Her sekme ayrı bir tty girişidir, bu yüzden çalışması gerekir.
Seth Noble

Terminal bu tür davranışlar için açık bir desteğe sahiptir: yeni bir terminal oluşturduğunda terminale benzersiz bir kimlik atar ve TERM_SESSION_ID ortam değişkeni aracılığıyla terminal oturumuna iletir. Bir terminal Devam için geri yüklendiğinde, aynı oturum kimliğini de geri yükler, böylece programlar bunu keyfi durumu geri yüklenen terminallerle ilişkilendirmek için kullanabilir. Bunu tty yerine dosya adının bir parçası olarak kullanın.
Chris Page

Bu sorun, her pencere / sekme başlatışınızda oturumun farklı olmasıdır. Böylece ayrı geçmişler oluşturacak ve bunları oturumlar arasında ilişkilendirmeyecekti.
Rene Wooller

5

Bunu ekleyerek uyguladım

export HISTFILE="$HOME/.bash_history_$TERM_SESSION_ID"
if [ ! -e $HISTFILE ]; then cp "$HOME/.bash_history" "$HISTFILE"; fi

benim ~/.bash_profiledosyama. Şimdi terminali kapatıp tekrar açtığımda, her sekmenin ayrı komut geçmişi geri yüklendi. Ayrıca yeni sekme oluşturduğumda, varsayılan geçmiş.bash_history

Ayrıca Terminaluygulamanın çık ve yeniden başlat arasında açık sekmeleri korumasını sağlamak için seçeneğin "close windows when quitting app" (on Yosemite)devre dışı olduğundan emin olmanız gerekir System Preferences -> General.


0

Her bir Terminal örneği için özel bir $ HISTFILE ayarlayabilirsiniz.


Bunu her Terminal sekmesi / penceresi için otomatik olarak yapmanın bir yolu var mı? $HISTFILEBilgisayar yeniden başlatıldığında da aynı şeyi kullandığınızdan emin misiniz?
Robert Sköld

1
Evet, bunu yapmak mümkün, ama sonra tekrar nasıl erişirdiniz? Önceki geçmiş dosyalarına ulaşmak için dosyaları elle dengelemeniz gerekir.
EmmEff

@EmmEff Terminal'in bu tür davranışlar için açık bir desteği vardır: yeni bir terminal oluşturduğunda terminale benzersiz bir kimlik atar ve TERM_SESSION_ID ortam değişkeni aracılığıyla terminal oturumuna iletir. Bir terminal Devam için geri yüklendiğinde, aynı oturum kimliğini de geri yükler, böylece programlar bunu keyfi durumu geri yüklenen terminallerle ilişkilendirmek için kullanabilir.
Chris Page
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.