记录Shell输出时脚本出现错误

时间:2018-12-06 02:14:05

标签: linux shell

我想知道如何记录终端的所有输入和输出。

当然,我可以使用script命令,但是我将记录每个用户的输入和输出。因此,我将脚本放入文件.barhrc中,用于每个用户的主目录。 就像这样:
script -a -f -q $RECORDFILE

但是当其他程序或Shell脚本执行source ~/.bashrc时,我遇到了一个错误。因为source ~/.bashrc进入了一个新的shell环境,所以它阻止了我的脚本继续使用我使用exit命令的脚本,并停止了录制。

对不起我的英语不好。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以设置变量,还可以检查输入是否为TTY:

if [[ -z "$RECORDING" && -t 0 ]]
then
  RECORDING="YES" exec script -afq "$RECORDFILE"
fi
  • 该变量确保您不会在已经录制的会话中开始录制。

  • 检查输入是否为终端,以确保从cron运行的任何脚本都不会尝试开始记录,即使此类脚本运行source ~/.bashrc来尝试设置一些变量也是如此

您还应该查看~/.bash_profile是否是更好的开始录制的地方。该文件仅在登录时运行,脚本通常不会尝试source。但是,某些终端模拟器无法使用登录Shell启动,因此它们可能无法开始录制。