52

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

84

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
  • 7
    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
8

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
  • 8
    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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .