If I press the Up or Down arrows on my keyboard and then modify something from my history, it's changed forever. Even if I press Ctrl-C and then try to bring it up again, it's still changed -- I've lost that entry in my history.

How can I prevent this from happening?

  • 3
    I love the title of this question. You can actually alter history and you're complaining? What is wrong with you?!
    – Daniel Beck
    Jun 25, 2011 at 22:24
  • @Daniel: Lol, yeah... I mean, it's as if I'm changing my past. Clearly nonsensical, and it gets ridiculously annoying after a while. :\
    – user541686
    Jun 25, 2011 at 22:25
  • Btw, if you use history-search-xxx instead, the behavior's different. Maybe that's something for you?
    – Daniel Beck
    Jun 25, 2011 at 22:29
  • @Daniel: That's indeed useful -- thanks a lot. But still, I'd like to know the answer to this question, because sometimes the commands don't look so much like each other, and that doesn't work.
    – user541686
    Jun 25, 2011 at 22:34
  • history-search with an empty prompt works just like regular history prev/next, i.e. displaying all entries.
    – Daniel Beck
    Jun 25, 2011 at 22:35

2 Answers 2


You want the readline setting:

set revert-all-at-newline on

You can either put it in ~/.inputrc (see note below), or put bind 'revert-all-at-newline on' in your ~/.bashrc.


$ 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

Further details are in the Bash manpage:


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. The default is ‘off’.


If a new ~/.inputrc file is created for the purpose of setting revert-all-at-newline, be aware that bash will use the readline settings in this file instead of any settings which may be in the file /etc/inputrc. That is, any settings specified in /etc/inputrc will no longer be in effect. Therefore, if the /etc/inputrc file exists, it's a good idea to start ~/.inputrc with the line:

$include /etc/inputrc

  • You're awesome, that's exactly what I need. No longer do I want to punch my monitor. :D +1000000 (I wish)
    – user541686
    Jun 26, 2011 at 0:08

I enter:

ls /tmp

- wonderful. Now I wan't to enter

ls /temp 

and can prevent it to enter the history, therefore prevent it to overwrite ls /tmp, if I start the command with a blank:

 ls /temp

It's hard to see, but if you know it ...

It is controlled by

export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth

ignoredups only ignores duplicated commands, ignoreboth ignores spaces at the beginning of line, which is useful, to hide otherwise unhidden passwords.

But maybe you're out for a solution, where you end with both commands, the unmodified old one, and the new one. My version of bash or settings behave like this, but I don't know, what's different to yours.

  • Ha; I always assumed not saving commands with a leading space was a bug. Thanks. :)
    – sarnold
    Jun 25, 2011 at 23:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.