How to clear bash history completely?

Tutorial Difficulty Level    

Sometimes you don’t want to leave commands in the Bash history (accessed with UP key) of your Linux server available to other users, because it may contain some sensitive data like passwords.

This tutorial may help you to control your Bash history file, which is where these commands are actually stored.

Normally, you can type the following command to clear all your Bash history:

Option Description
-c Clear the history list
-w Write out the current history to the history file


Type the following command to remove a certain line (e.g. 352) from the Bash history file:

Option Description
-d Delete specified line from the history


The problem with the above commands arise when it comes to SSH sessions. Basically, when a new SSH session is started, the previous commands are still all there in the history!

What you need to concentrate on here is that it is the file at ~/.bash_history that ACTUALLY holds the history of what you typed (everything is a file when talking about Linux, even devices – remember this).

So, to clear the bash history completely on the server, open terminal and type:

In technical terms, “/dev/null” is a virtual device file. But unlike other virtual devices, whatever you write to “/dev/null” is discarded, forgotten, thrown into the void…

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!!! Grrrr…

So, to workaround this, use the following command every time:

Don’t worry if you don’t fully understand it, just know that this could be the most important security tip you will ever read for a new Linux user!