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?
set revert-all-at-newline on
problema nella domanda che colleghi non risolve il tuo problema? Puoi mostrare come riprodurre il problema? Si noti che è anche possibile utilizzare zsh
per un comportamento più in linea con ciò che si desidera.
history -p
dovrei 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.
revert-all-at-newline
sia 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 revert
indica che revert-all-at-newline
è impostato su "off".
bash
. Si tratta di readline. Esistono diverse implementazioni della readline
libreria 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.
history -p
per eseguire espansioni della cronologia senza influire sul file della cronologia. Puoi farehistory -s
lo stesso e aggiungere alla cronologia senza esecuzione. Puoi fareHISTIGNORE='start of a command I never want in history.*:command2.*'
per mantenere certi comandi fuori dalla storia.