bash函数的不同结果
我试图编写一个脚本来记录服务器上执行的所有命令,目前我有两个版本: (脚本的简化版本) 第1版:bash函数的不同结果,bash,scripting,shell,Bash,Scripting,Shell,我试图编写一个脚本来记录服务器上执行的所有命令,目前我有两个版本: (脚本的简化版本) 第1版: function fc { fc -ln -0 } trap fc DEBUG 第2版: function fc { cmd=`fc -ln -0` echo $cmd } trap fc DEBUG 脚本包含在/etc/bash.bashrc:sourcescript.sh 问题是,当我运行此脚本时,不会得到相同的结果: 当我运行第一个verion时,我得到了触发陷阱的命令: SERV
function fc
{
fc -ln -0
}
trap fc DEBUG
第2版:
function fc
{
cmd=`fc -ln -0`
echo $cmd
}
trap fc DEBUG
脚本包含在/etc/bash.bashrc:sourcescript.sh
问题是,当我运行此脚本时,不会得到相同的结果:
当我运行第一个verion时,我得到了触发陷阱的命令:
SERVER#
SERVER#
SERVER# test
SERVER# ls
ls
但当我运行第二个命令时,我得到了last-1命令:
SERVER#
SERVER#
SERVER# test
SERVER# ls
test
提前感谢。如果您使用的是用于
陷阱调试的函数
,则可以使用特殊的BASH变量BASH\u命令
dbg() { echo "$BASH_COMMAND" >> ~/cmd.log }
trap 'dbg' DEBUG
确保此
trap
命令是~/.bashrc
中的最后一行(或~/.bash_配置文件中的最后一行,如果存在)。在第二个版本中,您在不同的进程中执行fc
,因此您不会有相同的历史记录。@Glenjackman谢谢,我已经试着直接在bash cmd=fc-ln-0中运行它;echo$cmd和cmd=
fc-ln-0`,我得到了相同的结果。如果我将trap debug放入/etc/bashrc中,是否会影响一般系统性能?不太可能,我甚至一起使用了trap debug
和PROMPT\u命令。好的。当我连接到服务器时,我看到来自其他脚本(~/.bashrc,…)的一些命令,这表明有一种方法可以忽略这些脚本。谢谢您是否只想将每个执行的命令存储在一个文件中?