How to use direnv to create environment variables in ubuntu
Environment variables are very important for setting up important variables that you don’t want to share in code. In my project, I have to set up some important variable that I require all over my project for the development. For example database names, email passwords, private keys and all other such things. But the problem with the environment variables is that you need to set them again and again. Everytime you come back to your shell, you have to create them again.
First of all, Let’s discuss the way in which we can set enviorment variables without using direnv. The easiest way of creating these variables is as follows:
$ export DB_USER=root $ export DB_PASSWORD=ranvir
And correspodingly you can call these variables in the python file as follows:
import os DB_USER = os.environ['DB_USER'] DB_PASSWORD = os.environ['DB_PASSWORD']
This way you can save yourself from sending very important code into you repository like I did some time ago and had go through a very long process for deleting that code from GitHub. In the mean time someone used the password and logged into my email account. Read the post about how I was able to delete the password from my account without deleting the repository.
This is good solution, Right? There is no doubt that once you start using it, you will fall in love with such technology. But in few days you will want to get out of typing in all the environment variables again and again after a shutdown or shifting of the bash shell. The solution of this problem is direnv.
Direnv is an open-source project used for proper setting of environment variables. The idea behind this is that you set up all your variables in a single file called .envrc and the environment will be created as soon as you enter the directory in which .envrc file is present.
For installing direnv in ubuntu apply the following command:
$ sudo apt-get install direnv
After this, you have to add the following line at the end of the
eval "$(direnv hook bash)"
Now go to a directory where you want to launch the environment variables. As long as you stay in that directory the value of environment variables will not change.
Use the following commands to create a file
$ touch .envrc
Open the file in your favourite text editor and add the following content. I myself prefer vim
export DB_NAME=abc export DB_USER=root
Save and close the file. The following error will be reported when you close the file.
direnv: error .envrc is blocked. Run `direnv allow` to approve its content
Do as the error say. Apply the following command and start using the environment variables:
$ direnv allow
Applying the command will give the following result:
direnv: loading .envrc direnv: export +DB_NAME ...
When you leave the directory the following result will be shown:
This now starts working as the virtual environment. Read more about virtual environments
Do share your views about the post.