Bash 当我的pkg运行其安装后脚本时,我如何知道这是如何发生的?
有两种方式可以运行此脚本:当用户打开Bash 当我的pkg运行其安装后脚本时,我如何知道这是如何发生的?,bash,macos,environment-variables,pkg-file,Bash,Macos,Environment Variables,Pkg File,有两种方式可以运行此脚本:当用户打开pkg文件并通过常规GUI设置时,或者当管理员(或精明的用户)运行sudo installer-pkg/path/to/installer.pkg-target/时。对于第二个,我想知道脚本是什么时候在这种模式下运行的,这样我就可以做出更便于管理的决定,比如不打开另一个GUI如何知道何时通过命令行安装了我的pkg 我希望有一些环境变量或类似的东西。通过sudo运行脚本将更改某些变量的值并添加其他变量。您的脚本可以检查这些变量(或它们的值)的存在,以确定安装程序
pkg
文件并通过常规GUI设置时,或者当管理员(或精明的用户)运行sudo installer-pkg/path/to/installer.pkg-target/
时。对于第二个,我想知道脚本是什么时候在这种模式下运行的,这样我就可以做出更便于管理的决定,比如不打开另一个GUI如何知道何时通过命令行安装了我的pkg
我希望有一些环境变量或类似的东西。通过sudo运行脚本将更改某些变量的值并添加其他变量。您的脚本可以检查这些变量(或它们的值)的存在,以确定安装程序是否通过sudo运行 将更新的值:
HOME
LOGNAME
邮件
——通过SUDO运行的命令SUDO\u命令
——运行SUDO的用户的GIDSUDO\u GID
——运行SUDO的用户的UIDSUDO\u UID
——运行SUDO的用户的用户名SUDO\u USER
SUDO_命令
环境变量是否存在;它不太可能被设置为非sudo安装,而会被设置为基于sudo的安装
参考:由于这是由
安装程序命令运行的,因此命令行\u INSTALL
环境变量设置为1
。正常打开pkg
时,根本不设置此变量
因此:
这应该与使用相关打包格式和工具链的操作系统或发行版一起标记。(正如pkg文件标签所说,不止一个操作系统使用该扩展名)。@CharlesDuffy doneth如果操作系统提供的工具在运行pre-and-post脚本之前没有对环境进行清理,这是真的。这肯定不总是正确的——例如,RPM试图防止包前脚本和包后脚本的行为被本地环境修改。
if [ $COMMAND_LINE_INSTALL ]; then
# Do stuff for CLI land
else
# Do stuff for GUI land
fi