Reputation: 4708
Imagine I am in a shell with the working directory set to a directory that contains an .envrc
file. When I now open up a new tab in my terminal emulator, a new shell is launched into the same working directory as the original shell.
For some reason, the .envrc
file is not loaded in this new shell. If manually exit the working directory and enter it again, the environment variables are then loaded.
Is there a way to make the variables load automatically when the shell is created?
I am running MacOS Mojave (10.14.4) with direnv 2.20.1, using bash as my shell. I am loading the direnv hooks through my .bashrc
.
Upvotes: 18
Views: 20234
Reputation: 2542
I found in my zsh environment I needed to put export in front of each variable in .envrc
VAR=x
doesn't work
Instead, use:
export VAR=x
Upvotes: 25
Reputation: 111
Is there a way to make the variables load automatically when the shell is created
you can add this to your .bashrc
eval "$(direnv hook bash)"
it activate a hook on at the start of your bash. If your bashrc is not loaded look at the bash_profile / bashrc to see which calls whom.
you can try to " source ~/.bashrc" to see if its your eval command that is not well written or your bashrc not called.
Upvotes: 8
Reputation: 824
Under macOS Mojave (and probably older versions), saving a .bashrc
has no effect. Instead, use a .bash_profile
.
Upvotes: 13