исходная команда не экспортировала переменные в среду zsh с помощью сценария оболочки

У меня есть действительно простой сценарий оболочки, который очень хорошо работает на 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

OR

. ./myscript.sh

Пожалуйста, сообщите, как я могу заставить его работать в среде zsh?


person Arbab Nazar    schedule 20.03.2016    source источник
comment
Поиск файла в среде оболочки запустит исходный файл в текущем процессе оболочки. Таким образом, переменная $RESULT может быть пустой. Откуда $RESULT?   -  person Kadir    schedule 21.03.2016
comment
Переменная $RESULT не пуста, у меня есть эхо, вот команда, откуда пришло значение RESULT: RESULT=$(aws sts accept-role --role-arn $ROLE_ARN --role-session-name $(date +%s)_$USER@$(имя хоста) --токен-код $MFA_TOKEN --серийный-номер $AWS_MFA_ARN)   -  person Arbab Nazar    schedule 21.03.2016
comment
Хм. Zsh больше похож на ksh, а bash — надмножество bsh. В сценарии bash будут некоторые несовместимые команды, которые zsh не может выполнить. Вы можете установить параметры XTRACE и VERBOSE, используя setopt XTRACE VERBOSE в среде zsh для отладки. @arbabnazar   -  person Kadir    schedule 21.03.2016
comment
как я могу заставить его работать в среде zsh? : Почему вы думаете, что это не сработает? Вы не показали, какой эффект вы ожидаете, и какой эффект вы видите на самом деле. Кстати, #! строка здесь не нужна, так как вы все равно получаете скрипт.   -  person user1934428    schedule 18.11.2020


Ответы (1)


В коде, который вы разместили, нет ничего плохого.

Ваши переменные просто не определены, или они определены и не экспортируются в исходном скрипте?

Я бы включил set -x перед поиском и проанализировал вывод. Возможно, у вас есть какие-то команды в исходном скрипте, поведение которых отличается между bash и zsh. Однако из трех строк, которые вы опубликовали, я не вижу никаких несовместимостей.

person user1934428    schedule 21.03.2016