49

Is there any way to exclude commands like rm -rf, svn revert from being getting stored in bash history? Actually I, by mistake, have issued them a number of times even though I have no intent to do, just because I am doing things quickly and it happened. Hence results in lost of lots of work I have did so far.

1

3 Answers 3

77

You might want $HISTIGNORE: "A colon-separated list of patterns used to decide which command lines should be saved on the history list." This line in your ~/.bashrc should do the job:

HISTIGNORE='rm *:svn revert*'

Also, you can add a space at the beginning of a command to exclude it from history. This works as long as $HISTCONTROL contains ignorespace or ignoreboth, which is default on any distro I've used.

5
  • 5
    space is how I've always done it.
    – Rob
    Feb 23, 2012 at 15:31
  • I used to accidentally enter additional y, after all cp (aliased to cp -i) get over. So I aliased y as alias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')' ... But HISTIGNORE is better method as it looks. :) Thanks.
    – anishsane
    Nov 22, 2013 at 13:02
  • 2
    Just to be more explicit: you can add export HISTCONTROL="ignorespace" to your ~/.bashrc to ignore commands that start with spaces. Jun 12, 2016 at 2:20
  • @AidanFeldman not default on macOS
    – akauppi
    Oct 12, 2017 at 16:28
  • NOTE: space should be included when we type in the commandline and not in HISTIGNORE. Mar 27, 2018 at 5:58
7

Though going slightly different from OP's question, when I intentionally don't want a command to get stored in bash history, I prefix them with a space. Works in Ubuntu and its variants, not sure if it works on all systems.

2
  • 7
    Depends on $HISTCONTROL (see my answer).
    – l0b0
    Feb 29, 2012 at 9:48
  • @l0b0 right, thanks for pointing out.
    – k4rtik
    Feb 29, 2012 at 14:38
3

I usually kill my bash-instance when I have done things that I don't want in the history.

kill -9 $$

$$ represents the current process - bash when you run it from the shell. You can use $BASHPID, but that's more typing :-)

4
  • 2
    Some Bash settings (like this) will save the history after each command, and in that case this won't work.
    – l0b0
    Feb 23, 2012 at 15:41
  • 1
    I used to do this. but setting HISTFILE=/dev/null is a better option.
    – anishsane
    Nov 22, 2013 at 12:54
  • simply HISTFILE= works in both bash and ksh.
    – kubanczyk
    Apr 8, 2016 at 18:45
  • or unset HISTFILE Nov 29, 2018 at 16:35

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.