Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

easily allow sourcing .env-file in bash #487

Open
woutervh opened this issue Oct 10, 2023 · 2 comments
Open

easily allow sourcing .env-file in bash #487

woutervh opened this issue Oct 10, 2023 · 2 comments

Comments

@woutervh
Copy link

python-dotenv is a python-library, and used in python-code.
Currently .env-files can only contain:

  • key/value-pairs
  • blank lines
  • comments

But sometimes, env-vars are also used by executables outside your python-code.
E.g In a django-project with a postgresql-backend, I have these env-vars:

# postgres - used in django-settings + by postgres-executables (pg_* )
PGHOSTADDR="127.0.0.1"
PGPORT="5432"
PGDATABASE="my-db"
PGUSER="my-dbadmin"
PGPASSWORD="SUPERSECRET"
PGOPTIONS=""

# used only by postgres-executables, 
# cfr. https://www.postgresql.org/docs/12.1/libpq-envars.html
PGDATA="..."
PGHOST="..."

I use following snippet to load all these key/value-pairs in my current bash-session
to use the postgresql-commands:
`

set -a && source .env && set +a
`

You can find many oneliners to source a .env-file in bash, many using grep/sed/xargs/...

If we would allow setting bash-options in the .env-file:

set -o allexport
PGHOSTADDR="127.0.0.1"
...
set -o allexport

these option-lines can just be skipped in the python-parsing of the dotenv,
this would simplify to:

 > source .env

just source the .env!

@bbc2
Copy link
Collaborator

bbc2 commented Oct 10, 2023

As documented in our readme (https://github.com/theskumar/python-dotenv#file-format), you may prepend export to your lines defining variables. Would that work for you?

There are several ways to do this in Bash and I'm not sure we want to add support for all the cases in Python-dotenv (i.e. ignore all possible forms of the "export" directives).

@woutervh
Copy link
Author

ignore all possible forms of the "export" directives

ÌMHO, only needed is to skip/ignore lines starting with :

set -o ...
set +o ...

no?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants