Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 当我的pkg运行其安装后脚本时,我如何知道这是如何发生的?_Bash_Macos_Environment Variables_Pkg File - Fatal编程技术网

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\u命令
    ——通过SUDO运行的命令
  • SUDO\u GID
    ——运行SUDO的用户的GID
  • SUDO\u UID
    ——运行SUDO的用户的UID
  • SUDO\u USER
    ——运行SUDO的用户的用户名
我的建议是检查
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