Activation of a directory environment
Once you have finished setting your .envrc.ini
configuration file, you can now
activate your directory environment. The activation process will parse the
content of your .envrc.ini
file and will load modules accordingly.
To activate your directory environment, you have two possibilities:
- Acitvate it manually
- Automate activation using
direnv
Depending on the value of variable
DIRENV_DEBUG_LEVEL
for module
direnv_management
, log output might change when
activating directory environment, either manually or automatically.
If DIRENV_DEBUG_LEVEL
is set to DEBUG
or INFO
, you will have following
output when activating directory environment:
[INFO] Loading module module_name.
Manual activation
Not recommend way to activate directory environment
Manual activation of directory environment is not recommend. Exported
variables and scripts added to the PATH
when activating the directory
environment will be available even outside of the working directory. Until
you manually deactivate the directory environment (see section
Deactivate).
This may create conflict with other working environment. We strongly
recommend the automatic activation using direnv
. Indeed, with
direnv
, the directory environment will automatically be
deactivated when leaving the working directory.
To activate the directory environment manually, you simply need to source
.direnv/activate_direnv
file:
# Activate manuall directory environment
source .direnv/activate_direnv
If something went wrong, you will see output like:
[ERROR] Error message to explain what happen.
In this case, please refers to section Error during activation below.
Automatic activation
If you are a direnv
user, you might want to automate activation of
the directory environment (which is exactly direnv
purpose. In order
to do so, when setting up the directory environment a file .envrc
has be put
in the directory. So, you might have seen the following message:
direnv: error /path/to/.envrc is blocked. Run `direnv allow` to approve its content.
So to automate the activation of the directory environment, you just need to type the following command:
direnv allow
If something went wrong, you will see output like:
[ERROR] Error message to explain what happen.
In this case, please refers to section Error during activation below.
Error during activation
During the activation of the directory environment, you might see output message
starting with [ERROR]
(indepently of the value of variable
DIRENV_DEBUG_LEVEL
).
Normally, you might see three types of error:
-
Module does not exists
This menas that you setup a wrong section module, i.e.[ERROR] Module module_name does not exists ! [ERROR] Please review file /path/to/.envrc.ini to remove or comment it.
[module_name]
in your.envrc.ini
file. Please review your.envrc.ini
file, this might come from a typo error. Moreover, see available modules to know which modules is available. -
SHA1 error of a specific module
[ERROR] SHA1 of file `.direnv/modules/module_name.sh` does not correspond to `.direnv/.sha1/modules/module_name.sh.sha1`. [ERROR] An error occurs while loading direnv
This means that the module specified has been modify. This is a security feature.
Normally,
direnv
provide a security when file.envrc
has been modify to avoid execution of malicious code. But usage of this project make no use of this security. As you can activate directory environment manually or if you are usingdirenv
you never need to update.envrc
, so once allowed,direnv
will not know it it will execute malicious code.To tackle this issues, every files used by this project is provided with its SHA1 sum. So, when activating directory environment first things done is to ensure that these files as not been modified and so, avoid execution of malicious code.
If you modify one of these files volontarily, you will need to update the corresponding SHA1 sum of the files you modified. To do so, please refer to the tutorial Add direnv module. And, even better, if you modify a files, this probably means that project currently lack a feature. Do not hesitate to contribute and submit a merge request to let the community make profit of your enhancement. In order to do so, please refers to the Developers Guide
-
SHA1 error of
.envrc.ini
[ERROR] SHA1 of file `.envrc.ini` does not correspond to `.direnv/.sha1/.envrc.ini.sha1`. [ERROR] If you modify /path/to/.envrc.ini. [ERROR] Please remove /path/to/.direnv/.sha1/.envrc.ini.sha1. [ERROR] And reactivate direnv.
This means your
.envrc.ini
has been modified, probably by you. But if it is not the case, this project avoid malicious modification of your.envrc.ini
.Indeed, as for files provided with this project, there is a protection mechanism. This project require a SHA1 sum of your
.envrc.ini
. This SHA1 sum is stored in.direnv/.sha1/.envrc.ini.sha1
.If this file does not exist, then the SHA1 sum of your
.envrc.ini
file will be computed and stored in.direnv/.sha1/.envrc.ini.sha1
.If this file exists, then each time you will activate your directory environment, the SHA1 sum of your
.envrc.ini
will be checked against the value stored in.direnv/.sha1/.envrc.ini.sha1
.If the value differs, then you will see this error. In this case, review the content of your
.envrc.ini
. If something seems wrong, then correct it in your.envrc.ini
, else, if everything seems right for you, then you can simply delete.direnv/.sha/.envrc.ini.sha1
and finally, you can activate your directory environment again.