Почему AWS cli виден одним bash сценарием, а не другим? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 2 bash скрипта в одном каталоге. Первый запускается и выполняет:

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws
export PATH=~/bin:$PATH

eval $(aws ecr get-login --region eu-west-2 --no-include-email) # executes OK

второй сценарий запускается и выполняет:

configure_aws_cli() {
      aws --version
      aws configure set default.region eu-west-2
      aws configure set default.output json
      echo "AWS configured."
    }

configure_aws_cli

Почему я получаю aws: command not found?

Я получаю эту ошибку даже при нарушении DRY вот так:

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws
export PATH=~/bin:$PATH

configure_aws_cli() {
      aws --version
      aws configure set default.region eu-west-2
      aws configure set default.output json
      echo "AWS configured."
    }

configure_aws_cli

Ответы [ 3 ]

0 голосов
/ 24 апреля 2020

Это происходит, когда вы по какой-либо причине запускаете два сценария с разными интерпретаторами.

Ваш сценарий работает с Bash, поскольку он расширяет ~ как после =, так и в PATH. Сбой, например, dash, который не работает ни один.

Вы можете заставить его работать во всех оболочках, используя $HOME вместо ~:

export PATH="$HOME/bin:$PATH"

Если вы хотите дополнительно изменения в PATH для применения к будущему сценарию, применяются обычные правила source.

0 голосов
/ 24 апреля 2020

Проблема решена установкой AWS инструмента командной строки с использованием pip вместо извлечения его из API c publi, предоставляемого AWS. Нет необходимости возиться с PATH.

0 голосов
/ 24 апреля 2020

Если вы просто выполните скрипт, он будет выполнен дочерним процессом, и ваш "путь экспорта" будет d ie с этим дочерним процессом. Попробуйте запустить первый процесс с "." или "источник"

. ./first.sh
./second.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...