Bagaimana cara berbagi riwayat antar tab terminal?

23

Saya biasanya menemukan diri saya menggunakan dua atau tiga tab di Terminal saya di OS X.

Ketidaknyamanan kecil adalah bahwa, secara default, tab tidak membagikan riwayat perintah mereka. Jadi, mencari perintah sebelumnya yang saya jalankan di tab lain dengan mengetik history | grep thingIamlooking fortidak menemukannya.

Apakah ada cara memaksa tab Terminal untuk berbagi riwayat, atau adakah perintah " history_of_all_tabs " lainnya?

Joe
sumber

Jawaban:

29

Saya tidak berpikir ada cara untuk berbagi sejarah hanya di antara tab Terminal, tapi di sini ada sesuatu yang bisa membantu Anda.

Sejarah bukanlah sesuatu yang ditangani oleh terminal Anda tetapi oleh shell Anda (bash, tcsh, zsh, dll.)

Berikut adalah beberapa opsi yang akan membantu Anda mengatur riwayat bersama di antara semua jendela terminal (instance shell).

Ini harus diletakkan di suatu tempat di .bashrcfile Anda .

export HISTCONTROL=ignoredups:erasedups  # no duplicate entries
export HISTSIZE=100000                   # big big history
export HISTFILESIZE=100000               # big big history
shopt -s histappend                      # append to history, don't overwrite it

# Save and reload the history after each command finishes
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Seumur hidup
sumber
1
+5 untuk jawaban yang baik, +5 untuk tata bahasa yang baik;)
Matt
@ Solusi Lifely tidak bekerja untuk saya di El Capitan. Sama sekali. Bahkan panjang maksimal file histori. Apakah ada solusi baru sejak 2012? (Saya sudah berkomentar di atas, tetapi tidak memiliki perwakilan)
JP Duffy
1
Ini berfungsi untuk saya (ditambahkan dalam .bash_profile) di El Capitan dengan penambahan ekspor SHELL_SESSION_HISTORY = 0 di .bash_profile saya dan menjalankan: touch ~ / .bash_sessions_disable
Andy
berfungsi dengan baik di Ubuntu 18.04 untuk bash
anon58192932