импортировать переменные среды в сценарий bash

Есть много способов сделать это. Вот еще один. Вы можете придумать и другие способы.

  echo "unix is great os." | tr [a-z] [A-Z]
  UNIX IS GREAT OS.
2
18.01.2019, 01:56
2 ответа

Вы должны убедиться, что вы экспортируете переменные среды, к которым вы хотите иметь доступ в вашем скрипте, прежде чем запускать скрипт. ИЕ:

Unix> export MY_TEMP=/tmp
Unix> some_script.sh

Теперь некоторые _script.sh будут иметь доступ к $MY _TEMP --когда вы вызываете сценарий оболочки, вы получаете новую среду только с экспортированными переменными, если только вы не "используете" ее, предварительно команда скрипта с точкой ("." )и пробел, затем имя вашего скрипта:

Unix> . some_script.sh  # runs in current environment

Совет по отладке :Включите в верхнюю часть скрипта команду set, чтобы увидеть, какие переменные может видеть ваш скрипт.

7
20.08.2021, 11:05

Также обратите внимание, что если вы хотите, чтобы они существовали только в течение «длительности выполнения сценария», вы можете поместить их экспорт в файл, а затем использовать этот файл в своем сценарии.

Поскольку при выполнении сценария он будет выполняться в новой оболочке, таким образом, эти переменные будут экспортированы только в эту подоболочку (и ее потомков ), и они не попадут в вашу собственную оболочку, т.е. это будет выглядеть так, как будто вы отключили их автоматически после окончания выполнения скрипта.

Пример:

# config.txt
export SECRET=foobar
# prog.sh
#!/usr/bin/env sh
source./config.txt
echo $SECRET

Теперь запустите его:

chmod +x prog.sh
./prog.sh

, а затем убедитесь, что переменная SECRET не просочилась в вашу собственную оболочку:

echo $SECRET # <-- must echo a blank line
0
17.11.2021, 13:15

Теги

Похожие вопросы