-
-
Notifications
You must be signed in to change notification settings - Fork 647
Open
Description
Summary
If .env references a variable (e.g. ${FOO}) which is not already set (either via the external environment, or in the .env file, it is left unexpanded.
This is in contrast to the following other languages / implementations which will expand the variable to an empty string:
- Bash (
source) - Python: python-dotenv
Demo
Consider this .env file:
# A simple, constant env var
CONST='A constant env var'
# Derived from another variable
DERIV="I came from ${CONST} with some more"
# An environment variable we expect to be set on the outside
EXT_SET=${ENV_EXT_SET}
# An environment variable we expect *not* to be set on the outside
EXT_UNSET=${ENV_EXT_UNSET}When loaded by bash, EXT_UNSET will get the value "" (that is, the empty string).
When loaded by phpdotenv v5.2.0, EXT_UNSET will get the value "${ENV_EXT_UNSET}" (literally).
See this gist for a full reproducible example:
$ pip3 install scuba
$ ./prepare.sh
$ ./run_test.sh
------------------------------------------------------
Bash:
CONST=A constant env var
DERIV=I came from A constant env var with some more
EXT_SET=set externally
EXT_UNSET=
------------------------------------------------------
phpdotenv:
$_ENV = Array
(
[CONST] => A constant env var
[DERIV] => I came from A constant env var with some more
[EXT_SET] => set externally
[EXT_UNSET] => ${ENV_EXT_UNSET}
)
------------------------------------------------------
python-dotenv:
CONST=A constant env var
DERIV=I came from A constant env var with some more
EXT_SET=set externally
EXT_UNSET=
References
jonnylink
Metadata
Metadata
Assignees
Labels
No labels