bash/shell Source и Export - Какая разница для передачи переменных среды окружения

Вроде бы разница такая:

  • source .env - дает доступ к переменным из источника именно текущему шелл-окружению
  • export NAME=VALUE - перадает значение запущенным из текущего шелл окружения другим подпроцессам

На что это влияет

Пусть у нас есть .env файл с таким содержимым:

BASE_VAL=7

(просто значение, заданное через равно)

Именно из за этой разницы, например php-скрипт myscript.php (который не является баш/шелл-командой) не получит значения из .env если вызывать его так:

/bash/bin -с "source .env && php myscript.php"

(см. решение этой проблемы).
а вот команда вида:

/bin/bash  -c "source .env && echo \$BASE_VAL"

- отработает успешно, получив значение переменной в окружении и тут же их распечатав (в том же процессе)

Видео: bash shell export source Какая разница - как передать переменные из файла другому процессу скрипту:

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

Примечание: в PHP получить переменную среды окружения можно так:

getenv('BASE_VAL')

_____________
матфак вгу и остальная классика =)