LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   bash - have too much history recorded (https://www.linuxquestions.org/questions/linux-newbie-8/bash-have-too-much-history-recorded-4175617294/)

L_Carver 11-09-2017 11:35 AM

bash - have too much history recorded
 
What I think are the relevant sections of my .bashrc:
Code:

shopt -s histappend
PROMPT_COMMAND='history -a;history -n'
export HISTFILESIZE=
export HISTSIZE=

Code:

shopt -s histappend
HISTSIZE=-1 HISTFILESIZE=-1
export HISTFILE=~/.bash_eternal_history
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

When I use the history command, or arrow-up to find a certain command I may have executed recently, I'm seeing the lines from the bash script I've run most recently.

Am I declaring shopt once too often. And I can't seem to find the -a tag in the history man pages.

I remember adding some lines to my .bashrc that returned only stdout commands, not lines from the last script I've used, and that's what I'm looking to have again.

Thanks in advance.

Carver

pan64 11-09-2017 11:39 AM

history is a bash built-in, so you need to check man bash and look for history within.
Code:

            -a    Append  the  ``new''  history  lines  to the history file.  These are history lines entered since the
                    beginning of the current bash session, but not already appended to the history file.

Otherwise I'm not really sure what is your problem

ondoho 11-09-2017 12:11 PM

or 'help history'

L_Carver 11-09-2017 03:12 PM

Quote:

Originally Posted by pan64 (Post 5778769)
history is a bash built-in, so you need to check man bash and look for history within.
Otherwise I'm not really sure what is your problem

I'm seeing the lines from the bash script I've run most recently, and I don't want to.
Here is my complete .bashrc:
Code:

# ~/.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
case $- in
    *i*) ;;
      *) return;;
esac
set -o noclobber
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=erasedups

# append to the history file, don't overwrite it
shopt -s histappend
HISTSIZE=-1 HISTFILESIZE=-1
export HISTFILE=~/.bash_eternal_history
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u:\W\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#  PS1='\u@\h: \W $ '
#  ;;
#*)
#    ;;
#esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#  sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

shopt -s histappend
PROMPT_COMMAND='history -a;history -n'
export HISTFILESIZE=
export HISTSIZE=

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
export HISTTIMEFORMAT="%d/%m/%y %T "
PS1='\u@\h [\W]\$ '

I'm thinking there's an extra line or command or tag that is causing my <arrow up> strokes to show lines in the last-run script. I changed the shopt and PROMPT_COMMAND, expecting to see only those commands I have typed into a terminal. What do I have in the above .bashrc file that I shouldn't?

Carver

scasey 11-09-2017 03:57 PM

You have:
Code:

PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
and
Code:

PROMPT_COMMAND='history -a;history -n'
which (I think) means that you save the history twice and read it back in once at every command execution.


My /etc/bashrc (sourced by ~/.bashrc) has
Code:

  # Turn on parallel history
  shopt -s histappend
  history -a

Try executing the shopt and history commands only once per session instead of at every command.

My CLI commands are saved to history at each normal close of my terminal sessions. I lose current session history if the session closes abnormally. I'm not sure why the lines of a script would be captured in history, tho. Just thought the PROMPT_COMMAND manipulation looked "overboard"

giis 11-20-2017 09:38 PM

I assume, you want to record all bash commands. Here's what I have in /etc/profile:
Quote:

HISTSIZE=10000
HISTFILESIZE=999999
export HISTSIZE HISTFILESIZE

ondoho 11-21-2017 01:15 AM

Quote:

Originally Posted by L_Carver (Post 5778768)
Code:

shopt -s histappend
HISTSIZE=-1 HISTFILESIZE=-1
export HISTFILE=~/.bash_eternal_history
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"


have you tried setting it to zero (0) instead of -1?


All times are GMT -5. The time now is 07:45 AM.