# autoenv
**Repository Path**: tanzhou007/autoenv
## Basic Information
- **Project Name**: autoenv
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2019-06-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Autoenv: Directory-based Environments
======================================
Magic per-project shell environments. Very pretentious.
**Note**: you should probably use `direnv `_ instead. Simply put, it is higher quality software. But, autoenv is still great, too. Maybe try both? :)
This image sums up the relationship between the two projects, very well:
.. image:: http://share.kennethreitz.org/1u0j2s3M1w36/776204239940493426%3Faccount_id=8.jpg
What is it?
-----------
If a directory contains a ``.env`` file, it will automatically be executed
when you ``cd`` into it. When enabled (set ``AUTOENV_ENABLE_LEAVE`` to a non-null string),
if a directory contains a ``.env.leave`` file, it will automatically be executed when you leave it.
This is great for...
- auto-activating virtualenvs
- auto-deactivating virtualenvs
- project-specific environment variables
- making millions
You can also nest envs within each other. How awesome is that!?
When executing, autoenv, will walk up the directories until the mount point and execute all ``.env`` files beginning at the top.
Usage
-----
Follow the white rabbit::
$ echo "echo 'whoa'" > project/.env
$ cd project
whoa
.. image:: http://media.tumblr.com/tumblr_ltuzjvbQ6L1qzgpx9.gif
Install
-------
Install it easily:
Mac OS X Using Homebrew
~~~~~~~~~~~~~~~~~~~~~~~
::
$ brew install autoenv
$ echo "source $(brew --prefix autoenv)/activate.sh" >> ~/.bash_profile
Using pip
~~~~~~~~~
::
$ pip install autoenv
$ echo "source `which activate.sh`" >> ~/.bashrc
Using git
~~~~~~~~~
::
$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc
Using AUR
~~~~~~~~~
Arch Linux users can install `autoenv `_ or `autoenv-git `_ with their favorite AUR helper.
You need to source activate.sh in your bashrc afterwards:
::
$ echo 'source /usr/share/autoenv/activate.sh' >> ~/.bashrc
Configuration
-------------
Before sourcing activate.sh, you can set the following variables:
- ``AUTOENV_AUTH_FILE``: Authorized env files, defaults to ``~/.autoenv_authorized``
- ``AUTOENV_ENV_FILENAME``: Name of the ``.env`` file, defaults to ``.env``
- ``AUTOENV_LOWER_FIRST``: Set this variable to flip the order of ``.env`` files executed
- ``AUTOENV_ENV_LEAVE_FILENAME``: Name of the ``.env.leave`` file, defaults to ``.env.leave``
- ``AUTOENV_ENABLE_LEAVE``: Set this to a non-null string in order to enable source env when leaving
- ``AUTOENV_ASSUME_YES``: Set this variable to silently authorize the initialization of new environments
Shells
------
autoenv is tested on:
- bash
- zsh
- dash
- fish is supported by `autoenv_fish `_
- more to come
Alternatives
------------
Direnv is an excellent alternative to autoenv, and includes the ability to unset environment variables as well. It also supports the fish terminal.
`https://direnv.net `_
Disclaimer
----------
Autoenv overrides ``cd``. If you already do this, invoke ``autoenv_init`` within your custom ``cd`` after sourcing ``activate.sh``.
Autoenv can be disabled via ``unset cd`` if you experience I/O issues with
certain file systems, particularly those that are FUSE-based (such as
``smbnetfs``).