该脚本有两种运行方式:当用户打开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 运行。
将被更新的值:
HOME
LOGNAME
MAIL
将被设置的值:
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