【问题标题】:source command didn't export variables to the zsh environment using shell scriptsource 命令没有使用 shell 脚本将变量导出到 zsh 环境
【发布时间】:2016-07-07 04:30:51
【问题描述】:

我有一个非常简单的 shell 脚本,它在 bash 上运行良好,并将变量导出到当前的 bash 环境,但不幸的是它没有将变量导出到 zsh 环境。

#!/bin/bash
export AWS_ACCESS_KEY_ID=$(echo $RESULT | jq --raw-output .Credentials.AccessKeyId)
export AWS_SECRET_ACCESS_KEY=$(echo $RESULT | jq --raw-output .Credentials.SecretAccessKey)
export AWS_SECURITY_TOKEN=$(echo $RESULT | jq --raw-output .Credentials.SessionToken)

我正在像这样运行这个脚本:

source myscript.sh

. ./myscript.sh

请指教,我怎样才能让它在 zsh 环境中工作?

【问题讨论】:

  • 在 shell 环境中获取文件将在当前 shell 进程中运行 sourcing 文件。所以$RESULT 变量可能为空。 $RESULT来自哪里?
  • $RESULT 变量不为空,我已经回显了,这是 RESULT 值的来源命令:RESULT=$(aws sts assume-role --role-arn "$ROLE_ARN" --role-session-name "$(date +"%s")_$USER@$(hostname)" --token-code $MFA_TOKEN --serial-number $AWS_MFA_ARN)
  • 嗯。 Zsh 更像是 ksh,而 bash 是 bsh 的超集。 bash 脚本中会有一些不兼容的命令,zsh 无法执行。您可以在 zsh 环境中使用 setopt XTRACE VERBOSE 设置 XTRACE 和 VERBOSE 选项以进行调试。 @arbabnazar
  • 如何让它在 zsh 环境中工作?:是什么让你认为它不起作用?你没有表现出你期望的效果,以及你实际看到的效果。顺便说一句,#!此处不需要行,因为无论如何您都在采购脚本。

标签: linux bash shell zsh oh-my-zsh


【解决方案1】:

您发布的代码没有任何问题。

您的变量是在采购脚本中根本没有定义,还是已定义但未导出?

我会在采购之前打开set -x,然后分析输出。也许您的源脚本中有一些命令,其中 bash 和 zsh 的行为不同。从您发布的三行中,我没有看到任何不兼容之处。

【讨论】:

    猜你喜欢
    • 2012-03-27
    • 2021-06-11
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多