Această soluție mi se pare destul de promițătoare după ce o folosesc de ceva vreme.
Adăugați următoarele la dvs ~/.bashrc fişier:
shopt -s histappend
PROMPT_COMMAND="istoric -a; istoric -c; istoric -r; $PROMPT_COMMAND"
fc_override_prev_command_if_no_args() {
dacă [ $# -eq 0 ]; atunci
fc
istoric -d $(wc -l < ~/.bash_history)
istorie -w
istorie -c
istorie -r
altfel
fc $@
fi
}
alias fc=fc_override_prev_command_if_no_args
Ceea ce face aceasta este schimbându-se comportamentul fc comanda când este apelată fără argumente. Când este chemat cu argumente, l-am făcut să se comporte așa cum se comportă de obicei, deoarece altfel comportamentul său ar induce în eroare fără dacă/altfel/fi bloc, și fără altfel parte că n-ar face absolut nimic.
Pe de altă parte, atunci când nu sunt furnizate argumente, atunci fc comanda este executată, ultima intrare din istoricul bash este abandonată și istoricul stocat în cache este reîncărcat din fișier.
Partea cu realocarea variabilei PROMPT_COMMAND de la care am împrumutat Aici și l-am găsit util, deoarece comenzile trimise sunt disponibile instantaneu în istoriile bash ale altor terminale deschise în prezent cu bash (OK, nu chiar instantaneu, dar chiar și o acțiune precum trimiterea SIGINT semnalul cu Ctrl+C este suficient pentru a reîncărca memoria cache a istoricului).
Simțiți-vă liber să editați acest răspuns sau să comentați dacă considerați că unele părți ale soluției nu sunt necesare.
Link către esenta cu fragmentul de mai sus este disponibil Aici