该脚本有两种运行方式:当用户打开pkg文件并通过正常的 GUI 设置时,或者当管理员(或精明的用户)运行时sudo installer -pkg /path/to/Installer.pkg -target /。对于第二个,我想知道脚本何时在这种模式下运行,这样我就可以做出更便于管理的决定,比如不打开另一个 GUI。我如何知道何时pkg通过命令行安装了我的?
我希望有一些环境变量或类似的东西。
该脚本有两种运行方式:当用户打开pkg文件并通过正常的 GUI 设置时,或者当管理员(或精明的用户)运行时sudo installer -pkg /path/to/Installer.pkg -target /。对于第二个,我想知道脚本何时在这种模式下运行,这样我就可以做出更便于管理的决定,比如不打开另一个 GUI。我如何知道何时pkg通过命令行安装了我的?
我希望有一些环境变量或类似的东西。
通过 sudo 运行脚本将更改某些变量的值并添加其他变量。您的脚本可以检查这些变量(或其值)是否存在,以确定安装程序是否通过 sudo 运行。
将被更新的值:
HOMELOGNAMEMAIL将被设置的值:
SUDO_COMMAND-- 通过 sudo 运行的命令SUDO_GID-- 运行 sudo 的用户的 GIDSUDO_UID-- 运行 sudo 的用户的 UIDSUDO_USER-- 运行 sudo 的用户的用户名我的建议是检查SUDO_COMMAND环境变量是否存在;它不太可能为非 sudo 安装设置,而是为基于 sudo 的安装设置。
由于这是由installer命令运行的,因此COMMAND_LINE_INSTALL环境变量设置为1. 正常打开时pkg,根本不设置此变量。
所以:
if [ $COMMAND_LINE_INSTALL ]; then
# Do stuff for CLI land
else
# Do stuff for GUI land
fi