在 AIX 上使用 script 命令进行安装脚本

在 AIX 上使用 script 命令进行安装脚本

我的软件有一个安装脚本,我需要它在 Linux 和 AIX 上运行。

在 Linux 上我可以使用myinstaller.ksh像这样的包装器:

#!/usr/bin/ksh
script -c myrealinstaller.ksh /var/log/myinstaller.log

但在 AIX 上script 不支持该-c选项

如何myrealinstaller.ksh在脚本创建的分叉 shell 中运行我的程序?

答案1

您可以增强包装脚本来检测操作系统;如果它在 Linux 上运行,则执行script -c ...,但如果它在 AIX 上运行,则为 script-shell 提供一个仅运行您的安装程序的覆盖配置文件,然后退出:

$ cat myinstaller.ksh
#!/usr/bin/ksh

case $(uname -s) in
  (Linux)
        script -c myrealinstaller.ksh /var/log/myinstaller.log
        ;;
  (AIX)
        printf "ENV= ./myrealinstaller.ksh\nexit\n" > ./installer.profile
        trap 'rm -f ./installer.profile' INT
        ENV=./installer.profile script -q ./var/log/myinstaller.log
        rm ./installer.profile
        ;;
esac

我调整了脚本和日志的路径以在本地测试它。涉及的其他因素是:

  • 设置ENV为指向我们调用时覆盖的配置文件script
  • 打电话script-q气氛安静一点
  • 重要的,取消设置ENV 在调用真正的安装程序期间,这样我们就不会无限循环
  • 安装程序完成后告诉覆盖的配置文件立即退出

myrealinstaller.ksh 示例如下:

#!/bin/ksh
echo Hi, I am the real installer

./var/log/myinstaller.log 的内容是:

Script command is started on Thu Mar 15 09:34:04 2018.
Hi, I am the real installer


Script command is complete on Thu Mar 15 09:34:04 2018.

相关内容