Comments (4)
Yes, the problem has to do with how the shell works.
With your command, the shell will interpret this. One of the first things it does is do the interpolation
npx dotenv -- echo "$FOO"
$FOO
is replaced by the env variable named FOO
which is probably unset, so you get the empty string
npx dotenv -- echo ""
Now npx
is run which runs dotenv -- echo ""
which runs echo ""
(where the last command has access to the env variable FOO=bar
)
I think npx dotenv -- bash -c 'echo "$FOO"'
should work as everything between '
is not interpreted so env variables are not replaced. Now dotenv-cli
will run bash -c 'echo "$FOO"'
with the env variable set which means bash
will run echo "$FOO"
in the right environment which should print correctly.
from dotenv-cli.
Extremely helpful — thank you for taking the time to explain @entropitor .
from dotenv-cli.
@rbrtmrtn No problem. I've been tripped up a lot by early shell interpolation / env variables from the wrong process. It's quite confusing sometimes 😅
from dotenv-cli.
Is there a way to make this work on multiple environments? Bash doesn't work on Windows.
Edit: A possible way this could work is with an interpolate flag and character substitution e.g.
dotenv -- command $SOME_VAR $SOME_VAR_2
would become
dotenv --interpolate SOME_VAR,SOME_VAR_2 -- command #1 #2
It would assign a number based on position in the command and then swap the #1
with the variable.
Note that the variables are deliberately not using the $
in the second command to prevent being swapped out.
You could also then swap the order of variables in the command, like so:
dotenv -- command $SOME_VAR_2 $SOME_VAR
would be
dotenv --interpolate SOME_VAR,SOME_VAR_2 -- command #2 #1
from dotenv-cli.
Related Issues (20)
- Documentation should recommend use of "--" separator HOT 2
- Specify directory containing .env files HOT 3
- its adding double quotes HOT 1
- [Bug]Runtime error when using "-p" option HOT 3
- Upgrade dotenv version? HOT 6
- Setting variable does not work when value has dash HOT 11
- dontenv-cli not escaping dollar sign correctly HOT 1
- sorry HOT 1
- dotenv-expand: TypeError: Cannot read property 'split' of undefined HOT 6
- .env.local should have higher priority than .env.<environment> HOT 2
- unable to run command with prefix HOT 1
- Fail to load env HOT 4
- Allow setting variable with a value containing strings HOT 7
- Change load order of multiple .env files HOT 2
- Override system variables HOT 2
- Conflicting options: 'override' and 'cascade' HOT 5
- Loading Vault files HOT 4
- Dotenv-cli removes output colors HOT 1
- npm ERR! could not determine executable to run HOT 1
- Add longopts HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dotenv-cli.