【问题标题】:Pass variables to the installer on OSX package Installer将变量传递给 OSX 包 Installer 上的安装程序
【发布时间】:2019-08-25 22:15:49
【问题描述】:

我正在尝试将变量传递给我的安装后脚本,但似乎不可用。 我试过了,但没有用:

sudo MY_VAR=VALUE installer -pkg my_package.pkg -target / 

我需要在安装后脚本中访问环境变量,而无需配置文件。

谢谢!

【问题讨论】:

  • 你在命令之前试过export MY_VAR=VALUE吗?
  • 是的,我试过了,也没用。
  • shell 将环境变量传递给shell 脚本...您确定您使用的是shell 脚本吗?那不是二进制文件吗? file installer 的输出是什么?
  • 抱歉,它是一个名为“installer”的二进制文件。当它安装 pkg 文件时,它会运行一个脚本(安装后脚本)。最后一个脚本是我需要访问 vars 的脚本。
  • 也许 sudo 会破坏变量定义。试试sudo su; export MY_VAR=VALUE; installer -pkg my_package.pkg -target /

标签: macos shell variables package installation


【解决方案1】:

在这种情况下,使用 export var_name=value 将不起作用。为此,您必须使用launchctl 并通过运行launchctl setenv var_name value 导出变量。之后,您可以使用launchctl getenv var_name 获取变量的值。在这里你可以看到一个例子:

sh-3.2# launchctl setenv var1 hello      
sh-3.2# launchctl setenv var2 world
sh-3.2# launchctl getenv var1
hello
sh-3.2# launchctl getenv var2
world

您也可以一次设置多个变量:

sh-3.2# launchctl setenv var3 one var4 line
sh-3.2# launchctl getenv var3
one
sh-3.2# launchctl getenv var4
line

要将它与您的包一起使用,您可以运行以下内容:

sh-3.2# launchctl setenv var_name value && installer -pkg your_package.pkg -target /

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2021-08-12
    • 2015-04-11
    • 2014-01-30
    相关资源
    最近更新 更多