【发布时间】: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