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?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityThe 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
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
> ~/.bash_hstory
be enough?
Jan 10, 2013 at 4:36
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.
history -cw
execute the following commands to clear history forever
history -c && history -w
good luck!
There's another much simpler one: running history -c
on the terminal prompt and gone are all entries in the bash_history
file.
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.
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.
rm ~/.bash_history; history -c; logout
Now log back in and witness that your arrow-up doesn't give you anything.
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.
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.