Nasıl bash (Terminal.app) önceki oturumların geçmişini hatırlamak için?


11

İş yerinde bilgisayarımda, yeni bir terminal açmış olsam bile, bash kabuğum önceki oturumlardan geçmişi hatırlıyor.
Evdeki bilgisayarımda bu olmaz.
Her iki makinede de aynı OS 10.6.8 var ve geçmişle ilgili herhangi bir ayarım yok .bash_profile.
Bunu oturumlarımdaki geçmişi hatırlaması için ev bilgisayarımda nasıl ayarlayabilirim?



Yanıtlar:


11

Bash'a geçmiş dosyanızı nerede tutacağınızı ve kaç satır tutacağınızı söylemeniz gerekir:

# Set the location of your HISTFILE
echo "export HISTFILE=/Users/<USERNAME>/.bash_history" >> ~/.bash_profile

# Number of lines to keep (1000 in this example)
echo "export HISTFILESIZE=1000" >> ~/.bash_profile

# Set how many commands to keep in the current session history list
echo "export HISTSIZE=80" >> ~/.bash_profile

# Ignore commands that start with a space
echo "export HISTIGNORE=\"&:[ ]*:exit\"" >> ~/.bash_profile

3
Bunların hepsi varsayılan olarak gereksiz olmalıdır. Varsayılan bash yapılandırması (en azından Mac OS X'te) komut geçmişini etkinleştirir.
Chris Page

Anahtar kelime, / gerekir /. Tarihi kaydetmiyorsa, bu bash'ı tarihi başlangıçta tutmaya zorlayacaktır.
Aaron Lake

2
Değil sadece gerektiği , ancak irade şey sadece bu değişkenlerin içine bazı değerleri çarparak sadece gerçek sorunu üzerine papering ki bu durumda varsayılan tarih davranışı, bastırmak için yapılmamışsa. Bu yanıt sorunu çözüyorsa, başka bir şey gerçekten berbattır ve diğer sorunları önlemek için düzeltilmelidir.
Chris Page

Bu ayarları yapabilirsiniz, ancak yalnızca terminaldeki geçmişi "etkinleştirmek" istiyorsanız daha basit bir çözüm / yanıt buldum. Benim için iyi çalıştı apple.stackexchange.com/a/220667/243988 (macOS High Sierra kullanıyorum)
jpruizs

4

Benzer bir sorun yaşadığımı fark ettim, ancak işverenimin sadece iki Mac'i var ve ikisi de masamın üzerinde oturuyor . Kabul edilemez, ancak başka bir zaman için bir savaş.

Her neyse, evde, Mac Mini (MacBook Pro'dan taşındı) .bashrcve / veya ayarlandıktan sonra bile işbirliği yapmadı .profile. Sonra ~/.bash_historydosyamın gizemli bir şekilde root'a ait olduğunu keşfettim . Bunu yapmak zorunda kaldım:

sudo -iu root
cd ~(myusername)
chown (myusername) .bash_history

(Evet, daha az komutla yapılabileceğini biliyorum. Alışkanlık.)

Sonra Terminal'den çıktım ve yeni bir tane başlattım. Woot! Daha önce kaybedilen her türlü tarih geri adım attı. Ne güzel.

Bunu okuyan herkes yanlışlıkla bu çıkmazda yer almıştır:% 0.2. Eminim aşırı gayretle başka bir şey "tamir" zaman bu mucked.


4

Bu sorun vardı ve benim için ne çalıştı .bash_sessions_disablebenim kullanıcı klasöründe ( ~/) adlı bir dosya oluşturmak oldu .

Temel olarak OS X .bash_sessions, her oturum için klasörde geçmiş dosyaları oluşturur (benim durumumda, her Sekme için bir tane). Ve bu oturumları düzgün bir şekilde kapatırken bile OS X, geçmişini tekrar oynatmaz .bash_history.

Oluşturma .bash_sessions_disablebu davranışı devre dışı bırakır.

touch ~/.bash_sessions_disable

Oturum başına komut geçmişini (varsayılan davranış) devre dışı bırakmak, sorulanın tam tersidir.
Chris Page

@ChrisPage Bu, yalnızca sorgulayan kişi oturum başına geçmişler hakkında soruyorsa doğrudur, bu durum böyle görünmemektedir ("oturumlar arasındaki geçmişi hatırla"). Bash oturum davranışını devre dışı bırakma .bash_historyGeçmişi .bash_sessions/klasör altında tutmak yerine tek bir geçmişi yeniden yürütmeyi ETKİNLEŞTİRİR . Bu doğru cevap imho.
Matt H

@MattH Soru, tarihin nasıl yeniden çalışacağını soruyor, çünkü hiç çalışmıyor gibi görünüyor ve bu oturum başına geçmiş özelliğini devre dışı bırakmak doğru yönde gitmiyor. Oturum başına geçmiş mekanizmasında bir hata varsa, bir kullanıcı bir hata raporu dosyalamalıdır, ancak yanıtın kapatılması bir şekilde tüm kullanıcılar için genel olarak doğru… yanlıştır. Normalde gayet iyi çalışıyor. Daha fazla bilgi için çeşitli cevaplar hakkındaki yorumlarıma bakın.
Chris Page

Başlangıçta yorum yaparken ben de bu geri bahsetmeliydim: tüm bash save / restore mekanizmasını devre dışı bırakmak son çare anlamına gelir ve mümkünse kaçınılmalıdır. SHELL_SESSION_HISTORYBelgede gösterildiği gibi 0'a ayarlayarak oturum başına komut geçmişi davranışını yalnızca kapatabilirsiniz /etc/bashrc_Apple_Terminal.
Chris Page

1

Bu Reddit dizisinden gelen bu cevap beni kurtardı:

Muhtemelen RVM bash_sessions çalıştırmak için "kanca" çıkışını engelliyor. .Bash_profile dosyanızda aşağıdaki satırı yorumlarsanız, bu satır çalışmalıdır.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

0

Ben de benzer bir sorun yaşadım, hiçbir tarih kaydedilmedi. Verilen çözümler işe yaramadı, ama sonunda sorunun eksik bir .bash_history kadar basit olduğunu öğrendim.

Solüsyon gitmek oldu /home/[username]/ve bir dosya eklemek .bash_history, böylece

nano .bash_history

ve sonra dosyaya herhangi bir şey yazın (aksi takdirde oluşturulmaz), çıkın ve kaydedin. Bundan sonra tarih normal çalışmaya başladı.


Bu sorunu çözüyorsa, başka bir şey yanlıştır ve diğer sorunlardan kaçınmak için düzeltilmelidir. Bash'i geçmiş dosyası olmadığında başlatırsanız, bir dosya oluşturulur. Bir tane oluşturmaya çalışmazsa veya oluşturamıyorsa, bazı kabuk başlangıç ​​komut dosyalarında veya giriş dizini izinlerinde bir sorun vardır. Örneğin, cevaba bakın: apple.stackexchange.com/a/118764/6883
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.