Переменная среды не настраивается после запуска скрипта bash

Я пишу сценарий bash для автоматизации задачи установки переменных среды для моего проекта. но когда я запускаю свой скрипт bash, используя sh env.sh (env.sh — это имя моего файла). Я могу получить значение от секретного менеджера AWS, и когда я делаю эхо внутри сценария bash, я могу распечатать переменную env, но когда я запускаю переменную echo $ после выполнения файла bash, она ничего не возвращает.

Я попытался заменить eval на источник, но не повезло

также я искал в stackoverflow проблему, но ни один из них не помог.

найти скрипт ниже

  #! /usr/bin/env bash

if [[ "$OSTYPE" == "darwin"* ]]; then
 echo 'running'
 if ! [ -x "$(command -v aws)" ]; then
  echo 'Aws is not installed. Installing aws............................' >&2
  curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
  if ! [ $(id -u) = 0 ]; then
   echo "The script need to be run as root." >&2
   exit 1
  fi
  sudo installer -pkg AWSCLIV2.pkg -target /
  if ! [ -x "$(command -v aws)" ]; then
   echo 'There was some issue installing aws cli. Install aws-cli manually and then run the script!!!' >&2
   exit 1
   fi
   echo "Running aws command please enter the aws access key and secrect"
   aws configure
  fi
   aws secretsmanager get-secret-value --secret-id abc --query SecretString --output text | jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' > /tmp/secrets.env
   eval $(cat /tmp/secrets.env | sed 's/^/export /')
fi

В настоящее время я запускаю этот файл bash в Mac OS, но я хотел бы, чтобы он работал на любой ОС.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
195
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если файл содержит имена переменных среды setup_local_env.sh, попробуйте

source setup_local_env.sh

Это добавит их к вашему текущему сеансу.

Есть еще одно решение, называемое точечным источником. Проверьте ссылку здесь

. ./setup_local_env.sh

Причина, по которой вы запускаете ./setup_local_env.sh напрямую, не работает, потому что он создает новый процесс bash и устанавливает там переменную среды, а затем он теряется после выхода нового процесса bash.

И минус за ответ на очередной дурак..

tink 16.10.2022 20:45

Другие вопросы по теме

Как запустить ENTRYPOINT от имени пользователя root и переключиться на обычный режим, чтобы запустить CMD с помощью gosu?
Как удалить и создать репозиторий GitLab в Bash и убедиться, что действие выполнено?
Задание cron не выполняет команду docker
Использование файла .sed и вызов его из файла .bash для поиска и замены слова текущей датой, но ошибка продолжает появляться из-за даты
Не имеет опыта работы с видео и ищет советы по работе с неправильной частотой кадров avi и возможными альтернативами
Как воссоздать Не удалось найти: ошибка разделения файла zip
Exec.Command не работает в golang для нескольких команд bash
Как правильно использовать внутренний разделитель полей?
Как заменить какой-либо шаблон из исходного файла на целевой файл, включая шаблоны из исходного файла?
Как сделать параллельный выход GNU с ненулевым кодом в случае, если подпроцесс SIGKILL?