我希望有一种一致的方式来处理环境变量。 例如,我有一个文件.env.development
包含:
# Some comment to be ignored
VAR0='some""" value0'
VAR1="some value1"
VAR2=ignored_value
VAR2=some_value2
从 bash shell 中,我可以设置 shell 变量(不是环境变量(:
$ source .env.development
$ echo $VAR0
some""" value0
$ echo $VAR1
some value1
我还想将这些变量提供给从 shell 启动的子进程:
script.py
#!/usr/bin/python
import os
print("VAR0 is:", os.environ.get("VAR0")
因此,我需要导出这些变量。 使用以下内容很接近,但保留允许获取文件所需的引号:
$ IFS=$'n' && export $(grep -v ^# .env.development | xargs -0) && unset IFS && ./script.py
('VAR0 is:', ''some""" value0'')
我想得到输出:
('VAR0 is:', 'some""" value0')
您可以忽略 grep、xargs 和 IFS,并将set -a
与 source
一起使用:
$ set -a && source .env.development && set +a && ./script.py
('VAR0 is:', 'some""" value0')