Comment empêcher Bash de modifier l'histoire?

Si j'appuie sur les flèches Haut ou Bas sur mon clavier, puis modifie quelque chose de mon histoire, ça change pour toujours. Même si j'imprime Ctrl-C, puis essaye de l'afficher à nouveau, il est encore changé – j'ai perdu cette entrée dans mon histoire.

Comment puis-je empêcher cela?

Vous voulez le paramètre readline:

set revert-all-at-newline on 

Vous pouvez soit le mettre dans ~/.inputrc , soit mettre bind 'revert-all-at-newline on' dans votre ~/.bashrc .

Demo:

 $ man bash $ bind 'set revert-all-at-newline on' $ man bsh # up arrow and edit No manual entry for bsh $ man bash # three up arrows 

D'autres détails sont dans la page de manuel:

  revert-all-at-newline (Off) If set to on, readline will undo all changes to history lines before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across calls to readline. 

J'entre:

 ls /tmp 

– formidable. Maintenant, je ne veux pas entrer

 ls /temp 

Et peut l'empêcher d'entrer dans l'historique, donc éviter d'écraser ls / tmp, si je lance la commande avec un blanc:

  ls /temp 

C'est difficile à voir, mais si vous le savez …

Il est contrôlé par

 export HISTCONTROL=ignoredups export HISTCONTROL=ignoreboth 

Ignoredups ignore uniquement les commandes dupliquées, ignoreboth ignore les espaces au début de la ligne, ce qui est utile, pour masquer les mots de passe autrement non identifiés.

Mais peut-être que vous êtes en solution, où vous finissez avec les deux commandes, l'ancien non modifié et le nouveau. Ma version de bash ou les paramètres se comportent comme ça, mais je ne sais pas, ce qui est différent de vous.