Sometimes we run bash commands with sensitive information. For example, running a shell script and passing passwords as the command-line arguments. In that case, it’s better to clear the bash history for security reasons.
Clear Bash History in Linux
When we run any command in the bash shell, it gets stored in the
.bash_history file located in the user home directory. We can use
history command to print all the commands from this file. There are options to delete the entire history or any specific command from the bash history.
1. Delete the Bash History to remove all commands
If you want to remove the bash history completely, you can run the
history -c command.
# history ... 737 history 738 vi .bash_history 739 cd 740 history # history -c # history 1 history #
2. Remove a Specific Command from the Bash History
If you want to remove a specific entry from the bash history, use to
history -d offset command. The offset is the line number from the output of the
[root@li1176-230 ~]# ls -1 | wc -l 3 [root@li1176-230 ~]# history 1 history 2 ls 3 cd 4 ls -1 | wc -l 5 history [root@li1176-230 ~]# history -d 4 [root@li1176-230 ~]# history 1 history 2 ls 3 cd 4 history 5 history -d 4 6 history [root@li1176-230 ~]#
How to Clear Bash History in Mac OS
If you are using plain bash shell, you can use the -d or -c option to remove the bash history.
bash-3.2$ history 1 history 2 cd 3 ls 4 pwd 5 history bash-3.2$ history -d 4 bash-3.2$ history 1 history 2 cd 3 ls 4 history 5 history -d 4 6 history bash-3.2$ history -c bash-3.2$ history 1 history bash-3.2$
ZSH Clear History
ZSH is very popular these days. It’s built on top of bash shell and provides a lot of additional features to help developers. Unfortunately, the above history commands won’t work to clear ZSH shell history. It’s because the ZSH history is saved in
~/.zsh_history file. If you want to remove any entry, open this file in VIM or any other editor and manually delete the entry from the file and save it.
Note: The zsh history is loaded when the session starts, so the changes to the .zsh_history file won’t reflect in the current shell session. If you launch a new shell by opening a new window or tab, you will notice the changes.