Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

How to clear bash history completely?

Writer Emily Wong

I want to clear all previous commands from the history of my server. I used history -c and it seems all things are cleared but when I ssh to the server, all the commands are still there.

How can I clear them permanently?

9 Answers

The file ~/.bash_history holds the history.

To clear the bash history completely on the server, open terminal and type

cat /dev/null > ~/.bash_history

Other alternate way is to link ~/.bash_history to /dev/null

However,

One annoying side-effect is that the history entries has a copy in the memory and it will flush back to the file when you log out.

To workaround this, use the following command (worked for me):

cat /dev/null > ~/.bash_history && history -c && exit
12

What to do:

In every open bash shell (you may have multiple terminals open):

history -c
history -w

Why: As noted above, history -c empties the file ~/.bash_history. It is important to note that bash shell does not immediately flush history to the bash_history file. So, it is important to (1) flush the history to the file, and (2) clear the history, in all terminals. That's what the commands above do.

Reference:

7

execute the following commands to clear history forever

history -c && history -w

good luck!

2

There's another much simpler one: running history -c on the terminal prompt and gone are all entries in the bash_history file.

2

Another way to do this is deleting the ~/.bash_history file by using rm ~/.bash_history command. When you login another time, the .bash_history file will be automatically created.

1

Clear the current shell's history:

history -c

When you log out, your current shell's history is appended to ~/.bash_history, which is a cache of previous shells' histories, to a maximum number (see HISTFILESIZE in "man bash").

If you want to remove the history altogether, then you essentially have to empty out ~/.bash_history which many of the above entries have suggested. Such as:

history -c && history -w

This clears the current shell's history and then forces the current shell's history (empty) to overwrite ~/.bash_history....or to be more accurate, it forces it to overwrite HISTFILE (which defaults to ~/.bash_history).

Hope this helps.

1
rm ~/.bash_history; history -c; logout

Now log back in and witness that your arrow-up doesn't give you anything.

1

Try this one

edit your .profile and add the line below at the end of the file

rm -f .bash_history

this way, every time you login, it will delete your .bash_history file automatically for you. Adding the -r recursive remove option seems dangerous and not needed.

0

If you want the history not to be saved in the first place, you should add this to your ~/.profile:

unset HISTFILE

That's it.
All new invocations of bash (if you re-login) will not log anything. After that you can delete the old ~/.bash_history file as well if you want.