I run Ubuntu 12.04, and for some reason bash does not keep my command history. the ~/.bash_history
file contains only 3 commands that I typed a few months ago.
How can I fix this?
EDIT:
here's the relevant content of my .bashrc
:
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
It could also be that root:root owns your .bash_history (ROOT SHOULDN'T BE THE OWNER, YOUR USER SHOULD BE THE OWNER!), in that case you need to:
This apparently could happen magically when you do sudo bash a lot!
Assuming you're using gnome-terminal??, if so maybe check the permissions on .bash_history. It should be
-rw-r--r--
To do so in a terminal
ls -la |grep .bash
, all 3 files should have the above permissions. Otherwise try deleting .bash_history, restart & see if a history is then writtenNote that the history is only written once the terminal is closed or quit.
As commented above, this can be fixed with root->user ownership changes. Initial permissions may be from
-rw-r--r--
or any other variation and root ownership.In my case I only had
.bash_history
owned by root but it is all of .bash_* that must be owned by user.