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.