我想知道如何记录终端的所有输入和输出。
当然,我可以使用script
命令,但是我将记录每个用户的输入和输出。因此,我将脚本放入文件.barhrc
中,用于每个用户的主目录。
就像这样:
script -a -f -q $RECORDFILE
但是当其他程序或Shell脚本执行source ~/.bashrc
时,我遇到了一个错误。因为source ~/.bashrc
进入了一个新的shell环境,所以它阻止了我的脚本继续使用我使用exit命令的脚本,并停止了录制。
对不起我的英语不好。
谢谢!
答案 0 :(得分:0)
您可以设置变量,还可以检查输入是否为TTY:
if [[ -z "$RECORDING" && -t 0 ]]
then
RECORDING="YES" exec script -afq "$RECORDFILE"
fi
该变量确保您不会在已经录制的会话中开始录制。
检查输入是否为终端,以确保从cron
运行的任何脚本都不会尝试开始记录,即使此类脚本运行source ~/.bashrc
来尝试设置一些变量也是如此
您还应该查看~/.bash_profile
是否是更好的开始录制的地方。该文件仅在登录时运行,脚本通常不会尝试source
。但是,某些终端模拟器无法使用登录Shell启动,因此它们可能无法开始录制。