Come smettere di bash modificare la cronologia quando riutilizzo e modifico una voce?


20

Alcune istanze di bash cambiano la cronologia dei comandi quando riutilizzi e modifichi un comando precedente, altri apparentemente no. Ho cercato e cercato, ma non riesco a trovare nulla che dica come impedire che i comandi nella cronologia vengano modificati quando vengono riutilizzati e modificati.

Ci sono domande come questa , ma sembra dire come affrontare la storia in corso di modifica. Ho incontrato di recente solo un'istanza di bash che modifica la cronologia quando riutilizzi un comando - tutte le precedenti shell bash che ho usato sono state (per quanto ho notato) configurate per non cambiare la cronologia quando riutilizzi e modifica un comando. (Forse non ho prestato la dovuta attenzione alla mia storia delle conchiglie negli ultimi 15 anni circa ...)

Quindi questa è probabilmente la domanda migliore: POSSO dire a bash MAI di modificare la cronologia - e se sì, come?


È possibile utilizzare history -pper eseguire espansioni della cronologia senza influire sul file della cronologia. Puoi fare history -slo stesso e aggiungere alla cronologia senza esecuzione. Puoi fare HISTIGNORE='start of a command I never want in history.*:command2.*'per mantenere certi comandi fuori dalla storia.
Mikeserv,

1
Il set revert-all-at-newline onproblema nella domanda che colleghi non risolve il tuo problema? Puoi mostrare come riprodurre il problema? Si noti che è anche possibile utilizzare zshper un comportamento più in linea con ciò che si desidera.
Stéphane Chazelas,

@mikeserv Guardando la pagina man, history -pdovrei fare qualcosa per ogni comando che voglio riutilizzare - giusto? Se è così, non è proprio quello che sto cercando. Come ho già detto, ho usato istanze di bash che non modificano mai la cronologia quando un comando viene riutilizzato e modificato.
Richard Wiseman,

@ StéphaneChazelas No, non credo revert-all-at-newlinesia proprio quello di cui ho bisogno. Se modifico un comando e premo CTRL-C per annullarlo, non voglio che ciò influisca sulla cronologia. Non ho mai dovuto configurare bash per non modificare la cronologia, il che è parte del motivo per cui sono confuso sul perché a volte una nuova installazione si comporta in un modo e talvolta nell'altro. A proposito, su un'istanza che non modifica la cronologia al riutilizzo dei comandi, a bind -V | grep revertindica che revert-all-at-newlineè impostato su "off".
Richard Wiseman,

2
In realtà questo ha ben poco a che fare con bash. Si tratta di readline. Esistono diverse implementazioni della readlinelibreria e ha anche un proprio set di impostazioni (MOLTE loro) e un proprio file di configurazione. Non sono sicuro esattamente se questa sia un'impostazione o semplicemente una differenza di implementazione, ma dovresti cercare nella documentazione relativa a readline, non bash.
Orione,

Risposte:


9

Si scopre che revert-all-at-newlineè la risposta. Ho dovuto includere set revert-all-at-newline onnel mio ~/.inputrcfile, poiché l'uso del setcomando al prompt di bash non ha avuto alcun effetto. (Quindi, ovviamente, ho dovuto iniziare una nuova shell.)

Inoltre, ho scoperto che ~/.inputrcviene caricato anziché /etc/inputrc se presente, il che significa che eventuali valori predefiniti definiti in quest'ultimo non sono più attivi durante la creazione ~/.inputrc. Per risolvere questo problema, inizia ~/.inputrccon $include /etc/inputrc.

Grazie a @ StéphaneChazelas per avermi indicato nella giusta direzione.


0

In ~ / .bashrc è possibile aggiungere

shopt -s histappend

Grazie, ma questo non ha alcun effetto sul problema che sto riscontrando. Ho appena controllato ed histappendè attivo ma la mia cronologia mostra ancora modifiche ai comandi precedenti.
Richard Wiseman,

Ho cercato la pagina man di bash e ho trovato le regole per la cronologia delle modifiche Readline Nomi dei comandi È abbastanza descrittivo ma non vedo un'opzione per quello che vuoi tranne forse: redraw-current-line Aggiorna la corrente linea.
Jeff Coleman,

C'è anche un'opzione di ripristino del tutto nuovo che di default è disattivata
Jeff Coleman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.