Using history command in bash script

Bert Swart bertswart at chello.nl
Sat Feb 25 19:01:04 UTC 2012


On Fri, Feb 24, 2012 at 07:20:20PM +0100, Johnny Rosenberg wrote:
> 2012/2/24 Bert Swart <bertswart at chello.nl>:
> > On Fri, Feb 24, 2012 at 01:59:39PM +0100, Johnny Rosenberg wrote:
> >> Den 24 februari 2012 13:12 skrev Johnny Rosenberg <gurus.knugum at gmail.com>:
> >> > Seems not to be possible.
> >> >
> >> > ~$ cat > pa
> >> > #!/bin/bash
> >> >
> >> > history
> >> > history
> >> > history
> >> > <Ctrl+d>
> >> > ~$ chmod +x pa
> >> > ~$ pa
> >> > ~$
> >> >
> >> > So there seem to be no history entries available when I run history
> >> > from a bash script. Why is this?
> >> >
> >> > I also tried to use the ~/.bash_history file, but it doesn't seem like
> >> > events are added to it for each command executed, since at least a
> >> > couple of ten commands are missing at the end. Seems like things are
> >> > added to the .bash_history file ”now and then”, I'm not sure how
> >> > often. How can I get around this? Where are the latest history lines
> >> > recorded before they are added to the actual .bash_history file?
> >> >
> >> > I'm trying to make a bash script that creates an alias for my last
> >> > command and save it in my .bash-aliases file (which is launched from
> >> > the .bashrc file), so I need some way to know what my latest command
> >> > was.
> >> >
> >> >
> >> > Kind regards
> >> >
> >> > Johnny Rosenberg
> >> > ジョニー・ローゼンバーグ
> >>
> >> About that .bash_history file:
> >> At the moment, my history is 620 entries. If I look in the
> >> .bash_history file, the last command there match entry 527 of the
> >> history command's output. Where are the 93 missing entries? Can I
> >> force bash to write those to the .bash_history file?
> > Yes, set history -a in your .bashrc
> 
> Failed.
Sorry, my mistake. Try adding to .bashrc:
shopt -s histappend
PROMPT_COMMAND='history -a'

First command appends history instead of overwriting, second should write
history after each command. Untested, I don't use it > All that did was to add
entries to the .bash_history file when the
> history -a command was run. After that, no more entries are added, at
> least not for every time they are executed.
> 
> I also tried to run history -a from my shell script, but history seems
> to be blocked in a bash script.
Correct, history can only be run from interactive shells. On non-interactive
shell, such as your script, history doesn't return anything.
> 
> 
> Kind regards
> 
> Johnny Rosenberg
> ジョニー・ローゼンバーグ
> 
> -- 
> ubuntu-users mailing list
> ubuntu-users at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-users




More information about the ubuntu-users mailing list