Saya secara rutin menjalankan beberapa screen
sesi di desktop dan server Linux saya.
Masalah dengan ini adalah bahwa ketika saya grep
melalui sejarah perintah saya, saya menemukan saya mengeluarkan perintah di sesi yang berbeda, dan harus melepaskan dan melampirkan kembali untuk mendapatkan item sejarah itu.
Apakah mungkin untuk 'memaksa' sejarah yang diperbarui secara berbeda dari beberapa sesi untuk semua pergi ke sejarah pusat?
Jawaban:
Ada dua hal yang perlu Anda lakukan:
shopt -s histappend
di.bashrc
. Ini akan ditambahkan ke file histori alih-alih menimpa itu..bashrc
, masukkanPROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
dan file riwayat akan ditulis ulang dan dibaca kembali setiap kali bash menampilkan prompt.EDIT: Terima kasih kepada e-t172 untuk
history -n
triknyasumber
PROMPT_COMMAND
mendefinisikan sebelumnya, jadi saya harus menggunakanPROMPT_COMMAND="history -a; history -n"
untuk menghindari kesalahan.Tolong jangan gunakan
history -a; history -n
, itu tidak berfungsi seperti yang Anda harapkan dan akan meninggalkan Anda dengan banyak duplikat, perintah rusak dalam sejarah Anda. Solusi yang berfungsi secara umum seperti yang diharapkan adalah sebagai berikut:Menggunakan baris baru alih-alih titik koma juga merupakan cara singkat untuk menangani masalah titik koma yang hilang / duplikat dengan PROMPT_COMMAND.
sumber
export
tidak perlu. Karena opsi shell interaktif seharusnya ditetapkan dari~/.bashrc
mana dipanggil dari setiap sub shell, maka pewarisan tidak diperlukan.PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
saja?PROMPT_COMMAND tidak didefinisikan secara default di beberapa distro. Sebagai contoh, ini didefinisikan dalam Arch, tetapi tidak dalam Debian.
Saya memiliki bashrc di Dropbox saya yang saya gunakan saat distro melompat, dan itu termasuk:
sumber
PROMPT_COMMAND="$PROMPT_COMMAND; history -a; history -n"
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''history -a; history -n'