Every command you type in Linux leaves a trace, and clearing that history keeps your terminal sessions private. If you have ever wondered how to clear command history in linux, you are in the right place. This guide walks you through every method, from quick one-liners to permanent settings, so you can manage your terminal footprint with confidence.
Your shell history is stored in a file, usually ~/.bash_history for Bash users. Each command you run gets appended there. While this is handy for recalling past work, it can also expose sensitive data like passwords or API keys. Clearing that history is a simple but essential skill.
Why Clear Command History Matters
Think of your command history as a diary of everything you do in the terminal. If someone else accesses your system, they can see every command you ran. This includes mistakes, private file paths, or even commands that reveal your workflow.
Clearing history is not just about privacy. It also helps you start fresh. If you are troubleshooting or testing scripts, a clean slate avoids confusion. You can also prevent accidental reuse of old commands that might not work anymore.
How To Clear Command History In Linux
This section covers the most direct ways to wipe your command history. Each method works for Bash, the default shell on most Linux distributions. We will also touch on Zsh and Fish later.
Method 1: The history -C Command
The fastest way to clear history is with the built-in history command. Open your terminal and type:
history -c
This clears the current session’s history list. However, it does not delete the history file on disk. When you close the terminal, the file might still contain old entries. To fully clear it, you need to also wipe the file.
Method 2: Clear The History File Directly
After running history -c, empty the history file with:
history -w
This writes the current (empty) history to the file. Alternatively, you can delete the file itself:
rm ~/.bash_history
Then create a new empty file:
touch ~/.bash_history
This ensures no trace remains. But remember, this only affects Bash. If you use other shells, you need their specific commands.
Method 3: Clear History For Zsh
If you use Zsh, the process is similar but uses a different file. Run:
history -p
Then clear the file:
cat /dev/null > ~/.zsh_history
Or simply delete it:
rm ~/.zsh_history
Method 4: Clear History For Fish Shell
Fish stores history in ~/.local/share/fish/fish_history. To clear it:
history clear
This command wipes the entire history. You can also use:
history delete --all
Both commands remove all entries permanently.
How To Prevent Commands From Being Saved
Sometimes you want to stop history from recording certain commands. This is useful for sensitive operations. Here are several ways to do that.
Add A Space Before The Command
If you start a command with a space, it will not be saved to history. This works in Bash and Zsh by default. For example:
echo "secret"
Notice the leading space. That command will not appear in your history file. This is a quick and easy trick.
Disable History Temporarily
You can turn off history recording for the current session. Run:
unset HISTFILE
This removes the history file variable. Commands will not be saved until you set it again. To re-enable, run:
export HISTFILE=~/.bash_history
Use The HISTCONTROL Variable
In Bash, you can set HISTCONTROL to ignore duplicates or commands with spaces. Add this to your ~/.bashrc:
export HISTCONTROL=ignoreboth:erasedups
This ignores commands that start with a space and removes duplicates. It is a permanent solution.
How To Clear Specific Commands From History
You might not want to wipe everything. Maybe you only need to remove one or two commands. Here is how to target specific entries.
Delete A Single Command By Number
First, list your history with line numbers:
history
Find the number of the command you want to remove. Then delete it:
history -d 123
Replace 123 with the actual line number. This removes that entry from the current session.
Delete A Range Of Commands
To delete a range, use:
history -d 100-120
This removes lines 100 through 120. You can also delete the last N commands with:
for i in {1..10}; do history -d $(history | tail -1 | awk '{print $1}'); done
This removes the last 10 entries. It is a bit hacky but works.
Edit The History File Manually
You can open the history file in a text editor:
nano ~/.bash_history
Delete the lines you want, then save. This is useful for bulk removal but requires caution.
How To Permanently Disable Command History
If you never want your commands saved, you can disable history entirely. This is extreme but effective.
Set HISTSIZE And HISTFILESIZE To Zero
In your ~/.bashrc, add:
export HISTSIZE=0
export HISTFILESIZE=0
This tells Bash to keep zero commands in memory and zero in the file. Restart your terminal or run source ~/.bashrc to apply.
Redirect History To /dev/null
Another trick is to point the history file to a null device:
export HISTFILE=/dev/null
This writes history to nowhere. It is a clean solution for temporary use.
How To Clear History For All Users
If you have root access, you can clear history for every user on the system. This is useful for shared servers or after a security incident.
Clear Root’s History
First, clear your own history as root:
history -c && history -w
Then delete the root history file:
rm /root/.bash_history
Clear Other Users’ Histories
Loop through all user home directories:
for user in /home/*; do
if [ -f "$user/.bash_history" ]; then
> "$user/.bash_history"
fi
done
This empties every user’s history file. Be careful with this command—it is irreversible.
How To Verify History Is Cleared
After clearing, you should confirm it worked. Run:
history
If it shows nothing, the current session is clean. Then check the file:
cat ~/.bash_history
If the file is empty, you are good. You can also check the file size:
ls -la ~/.bash_history
A size of zero bytes means it is empty.
Common Mistakes When Clearing History
Even experienced users make errors. Here are pitfalls to avoid.
Forgetting To Write The Empty History
Running history -c alone does not clear the file. You must also run history -w or delete the file. Otherwise, old commands reappear when you open a new terminal.
Clearing Only The Current Shell
If you have multiple terminal windows open, each has its own history list. Clearing one does not affect the others. You need to clear each session or restart them all.
Using rm Without Creating A New File
Deleting ~/.bash_history without creating a new one can cause errors. Some scripts expect the file to exist. Always recreate it with touch.
How To Automate History Clearing
You can set up automatic clearing to save time. Here are two methods.
Add A Cron Job
Create a cron job that clears history daily. Open your crontab:
crontab -e
Add this line to run at midnight:
0 0 * * * history -c && history -w
This works only if the shell is interactive. For a more robust solution, use a script that directly empties the file.
Use A Bash Logout Hook
Add this to your ~/.bash_logout file:
history -c
history -w
This clears history every time you log out. It is simple and effective.
How To Clear History In SSH Sessions
When you connect via SSH, your commands are still recorded. Clearing history in an SSH session works the same way, but there is a catch.
Clear Before Disconnecting
Run history -c && history -w before you exit. This ensures no trace remains on the remote server. If you forget, the history stays.
Use exit With A Clean Slate
Some admins configure SSH to clear history on logout. Check if your server has this setting. If not, you can add it to your remote .bash_logout.
How To Clear History For Other Shells
Not everyone uses Bash. Here are commands for other common shells.
Ksh (Korn Shell)
In Ksh, history is stored in ~/.sh_history. Clear it with:
history -c
rm ~/.sh_history
Tcsh
Tcsh uses ~/.history. Clear it with:
history -c
rm ~/.history
Dash
Dash does not have a built-in history command. It relies on the terminal emulator. You may need to clear the terminal’s own history.
FAQ: Clearing Command History In Linux
Q: Does clearing history affect running processes?
A: No. Clearing history only removes the record of commands. It does not affect any running processes or their output.
Q: Can I recover cleared history?
A: Once you empty the file, recovery is very difficult. There are no built-in undo options. Always be sure before clearing.
Q: How do I clear history without closing the terminal?
A: Use history -c and then history -w. This clears the current session and writes the empty list to the file.
Q: Does history -c work in all shells?
A: No. It works in Bash and Zsh, but not in Fish or Tcsh. Each shell has its own command.
Q: Is there a way to clear history for only one user?
A: Yes. Just clear that user’s history file. For example, for user “john”, run rm /home/john/.bash_history.
Final Thoughts On Managing Command History
Knowing how to clear command history in linux is a basic but powerful skill. It protects your privacy, helps you maintain clean sessions, and prevents accidental exposure of sensitive data. Whether you use a quick one-liner or set up automatic clearing, the methods here cover all major shells and scenarios.
Remember to always verify that the history is actually gone. A quick history command after clearing gives you peace of mind. And if you work on shared systems, make it a habit to clear your history before logging out.
With these techniques, you can keep your terminal activites private and your system secure. Practice them until they become second nature. Your future self will thank you.