Bagaimana Anda berbagi sejarah antar terminal di zsh?

29

Bagaimana itu bisa dicapai sehingga setiap perintah yang dimasukkan, terlihat dalam sejarah setiap terminal terbuka?

Ketika memiliki beberapa terminal terbuka, histori tidak dibagikan, yaitu apa yang Anda masukkan dalam satu terminal terminal, tidak muncul di terminal lain. Pikirkan alternatif dari Bash PROMPT_COMMAND="history -a"(yang menyimpan sejarah sebelum prompt ditampilkan).

MJB
sumber
Lihat juga Tanya Jawab yang terkait dan lanjut: superuser.com/questions/446594/…
lumbric

Jawaban:

36

Opsi berikut akan berlaku:

  • Untuk menyimpan setiap perintah sebelum dijalankan (ini berbeda dari sejarah bash -solusi):

    setopt inc_append_history
    
  • Untuk membaca file histori, setiap histori dipanggil juga fungsi dari inc_append_history:

    setopt share_history
    

Ini dapat diatur dalam .zshrcfile Anda .

Terkait untuk bash:

MJB
sumber
4
"SHARE_HISTORY: Opsi ini mengimpor perintah baru dari file histori, dan juga menyebabkan perintah yang Anda ketik ditambahkan ke file histori (yang terakhir adalah seperti menentukan INC_APPEND_HISTORY, yang harus dimatikan jika opsi ini berlaku )." (Dari penekanan manual ditambahkan) yaitu hanya opsi INC_APPEND_HISTORY yang akan melakukan apa yang Anda inginkan.
artfulrobot
3
Sebenarnya, hanya opsi SHARE_HISTORY saja yang akan melakukan apa yang Anda inginkan. Ungkapan "yang harus dimatikan jika opsi ini berlaku" diterjemahkan menjadi "[INC_APPEND_HISTORY] harus dimatikan jika opsi [SHARE_HISTORY] berlaku". Saya sudah menguji ini pada zsh 5.1.1 di Ubuntu Xenial.
Linus Arver
1
@opert benar: setopt share_historyadalah apa yang akan mencapai hasil yang diinginkan. @ MJB apakah Anda bersedia mengedit jawaban Anda untuk menghapus menyebutkan setopt inc_append_history? Itu mengaburkan jawaban yang sebenarnya.
bonh
Nama tidak sensitif huruf besar dan garis bawah diabaikan jadi jika Andasetopt | grep histmauincappendhistorydansharehistory.
Pablo A
4

Jika Anda menggunakan OhMyZSH yang mengagumkan dari Robby Russell, itu akan menangani ini dan banyak lagi.

Lihat https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Itu termasuk setopt inc_append_history.

james_womack
sumber
Ini miliknya. Penting untuk pekerjaan shell.
Cees Timmerman
@CeesTimmerman diperbaiki, terima kasih. Sangat penting untuk komunikasi secara umum saya percaya. Apa yang Anda maksud dengan "Penting untuk pekerjaan shell"?
james_womack
1
Kesalahan ketik di shell dapat merusak seluruh sistem Anda.
Cees Timmerman