1

该脚本有两种运行方式:当用户打开pkg文件并通过正常的 GUI 设置时,或者当管理员(或精明的用户)运行时sudo installer -pkg /path/to/Installer.pkg -target /。对于第二个,我想知道脚本何时在这种模式下运行,这样我就可以做出更便于管理的决定,比如不打开另一个 GUI。我如何知道何时pkg通过命令行安装了我的?

我希望有一些环境变量或类似的东西。

4

2 回答 2

1

通过 sudo 运行脚本将更改某些变量的值并添加其他变量。您的脚本可以检查这些变量(或其值)是否存在,以确定安装程序是否通过 sudo 运行。

将被更新的值:

  • HOME
  • LOGNAME
  • MAIL

将被设置的值:

  • SUDO_COMMAND-- 通过 sudo 运行的命令
  • SUDO_GID-- 运行 sudo 的用户的 GID
  • SUDO_UID-- 运行 sudo 的用户的 UID
  • SUDO_USER-- 运行 sudo 的用户的用户名

我的建议是检查SUDO_COMMAND环境变量是否存在;它不太可能为非 sudo 安装设置,而是为基于 sudo 的安装设置。

参考:sudo 1.8.20 手册 - 环境部分

于 2017-08-15T15:54:48.507 回答
1

由于这是由installer命令运行的,因此COMMAND_LINE_INSTALL环境变量设置为1. 正常打开时pkg,根本不设置此变量。

所以:

if [ $COMMAND_LINE_INSTALL ]; then 
    # Do stuff for CLI land
else
    # Do stuff for GUI land
fi
于 2017-08-17T14:28:26.057 回答