У меня есть tmp.txt
файл, содержащий переменные для экспорта, например:
a=123
b="hello world"
c="one more variable"
Как я могу экспортировать все эти переменные с помощью export
команды, чтобы впоследствии они могли использоваться дочерними процессами?
.env
файлы при входеcd
в каталог.Ответы:
Судя по вашему другому вопросу, вы не хотите жестко кодировать имена переменных:
Проверь это:
источник
grep
чтобы пропустить комментарии:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
set -a
заставляет переменные¹, определенные отныне, автоматически экспортироваться. Он доступен в любой оболочке, похожей на Bourne..
это стандарт и название Bourne дляsource
команды, поэтому я предпочитаю его для переносимости (source
происходит отcsh
и теперь доступен в большинстве современных Bourne-подобных оболочек, включая,bash
хотя (иногда с немного другим поведением)).В оболочках POSIX вы также можете использовать
set -o allexport
в качестве более наглядного альтернативного способа его записи (set +o allexport
для сброса).¹
bash
Имейте в виду, что это также приводит к тому, что все функции, объявленные в то времяallexport
как включено, экспортируются в среду (какBASH_FUNC_myfunction%%
переменные среды, которые затем импортируются всемиbash
оболочками, запущенными в этой среде, даже если они запускаются какsh
).источник
Просто сделать:
источник
set -a
будет намного проще, но это действительно работает.