I have not found any official documentation about this.
参考
http://unix.stackexchange.com/questions/5684/history-command-inside-bash-script
2014-03-18 wcdj
Question:
I have been bashing my head to write a simple history script for the last two days. History is a shell-built in command I couldn't able to use that within a BASH script. So, Is there a way attain this using BASH script ?
Here we go my script for you:
#!/bin/bash
history | tail -100 > /tmp/history.log
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
1 Bash disables history in noninteractive shells by default, but you can turn it on.
#!/bin/bash
HISTFILE=~/.bash_history
set -o history
history | tail …
2 I'm not sure if it actually uses the history capability when running non-interactively, otherwise every shell script you run would clutter up your command history.
Why not go directly to the source ${HOME}/.bash_history
, replace history | tail -100
with tail -100 ${HOME}/.bash_history
. (If you use timestamps you'd probably have to do something along the lines of grep -v ^# ${HOME}/.bash_history | tail -100
).
3 The history builtin seems to be disabled inside a shell script. See here: http://www.tldp.org/LDP/abs/html/histcommands.html
I have not found any official documentation about this.
参考
http://unix.stackexchange.com/questions/5684/history-command-inside-bash-script