当我的 pkg 运行它的 Post 安装脚本时,我怎么知道这是怎么发生的?
When my pkg runs its Post-installation script, how can I know how that happened?
此脚本有两种方式 运行:当用户打开 pkg
文件并完成正常的 GUI 设置时,或者当管理员(或精明的用户)运行s sudo installer -pkg /path/to/Installer.pkg -target /
。对于第二个,我想知道脚本何时在此模式下 运行 以便我可以做出更便于管理的决定,例如不打开另一个 GUI。 我如何知道我的 pkg
何时通过命令行安装?
我希望有一些环境变量或类似的东西。
运行 通过 sudo 的脚本将更改某些变量的值并添加其他变量。您的脚本可以检查这些变量(或其值)是否存在,以确定安装程序是否是 运行 通过 sudo。
将更新的值:
HOME
LOGNAME
MAIL
要设置的值:
SUDO_COMMAND
-- 通过 sudo 运行 的命令
SUDO_GID
-- 运行 sudo 用户的 GID
SUDO_UID
-- 运行 sudo 用户的 UID
SUDO_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
此脚本有两种方式 运行:当用户打开 pkg
文件并完成正常的 GUI 设置时,或者当管理员(或精明的用户)运行s sudo installer -pkg /path/to/Installer.pkg -target /
。对于第二个,我想知道脚本何时在此模式下 运行 以便我可以做出更便于管理的决定,例如不打开另一个 GUI。 我如何知道我的 pkg
何时通过命令行安装?
我希望有一些环境变量或类似的东西。
运行 通过 sudo 的脚本将更改某些变量的值并添加其他变量。您的脚本可以检查这些变量(或其值)是否存在,以确定安装程序是否是 运行 通过 sudo。
将更新的值:
HOME
LOGNAME
MAIL
要设置的值:
SUDO_COMMAND
-- 通过 sudo 运行 的命令
SUDO_GID
-- 运行 sudo 用户的 GID
SUDO_UID
-- 运行 sudo 用户的 UID
SUDO_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