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
Metadata
Metadata
Assignees
Labels
No labels
Activity