0

我正在尝试运行一个 zsh/bash 脚本,它将几个值写入环境变量,我希望这些变量可用于父 shell,因为它们是我们使用的几个工具所必需的。如果我使用 '. myscript myparamater' 我得到了预期的结果,但是定义一个 zsh 函数来执行此操作而不必使用点表示法不会导致设置变量。

我对 zsh/bash 脚本很陌生,这是我第一次真正努力编写有用的东西。我在 MacOS 上运行它,但希望它也能在 Linux 中工作,我的函数正在采购的脚本正在执行一些 bash 逻辑,并且在某些情况下还执行第三方可执行文件(实际上是一个调用 java 二进制文件的 bash 脚本)。在我的脚本中,我直接使用其可执行名称调用第三方工具,使用 exec 或点表示法调用它似乎无法正常工作。

zsh 功能:

function okta-auth {
    . okta_setprofile $1
}

我的脚本: https ://gist.github.com/ckizziar/a60a84a6a148a8fd7b0ef536409352d3

使用 '。okta_setprofile myprofile' 我收到了 okta_setprofile 脚本的预期输出,在我的 shell 中设置了四个环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION 和 AWS_SESSION_TOKEN)。使用 'okta-auth myprofile' 的脚本反馈与以前相同,但是在执行后,环境变量不会设置或更新。

更新 20190206 以显示流程

okta_setprofile 流图

4

0 回答 0