DIRENV-STDLIB(1) User Manuals DIRENV-STDLIB(1) (NAME) direnv-stdlib - .envrc (SYNOPSIS) direnv stdlib (DESCRIPTION) bash stdlib . .envrc . ~/.config/direnv/direnvrc . STDLIB has command 0 1 . PATH . : if has curl; then echo "Yes we do" fi expand_path [] rel_path relative_to . : cd /usr/local/games expand_path ../foo # output: /usr/local/foo dotenv [] ".env" . dotenv_if_exists [] ".env" . user_rel_path abs_path . : echo $HOME # output: /home/user user_rel_path /home/user/my/project # output: ~/my/project user_rel_path /usr/local/lib # output: /usr/local/lib find_up filename / . 1 . : cd /usr/local/my mkdir -p project/foo touch bar cd project/foo find_up bar # output: /usr/local/my/bar source_env .envrc . : .envrc . source_env_if_exists ".envrc" . : source_env . : source_env_if_exists .envrc.private . source_env source_env_if_exists . : # expect .envrc.private to provide tokens source_env .envrc.private # check presence of tokens env_vars_required GITHUB_TOKEN OTHER_TOKEN source_up [] .envrc find_up . . : .envrc . source_up_if_exists [] .envrc find_up . . : .envrc . source_url url . integrity-hash . integrity-hash direnv fetchurl . direnv-fetchurl(1) . fetchurl [] url stdout . integrity-hash . direnv-fetchurl(1) . direnv_apply_dump direnv dump . direnv_load [] argv . - "direnv dump" direnv_load . : direnv_load opam exec direnv dump PATH_add path PATH . PATH path . : pwd # output: /home/user/my/project PATH_add bin echo $PATH # output: /home/user/my/project/bin:/usr/bin:/bin MANPATH_add path MANPATH . (heuristic) man ..SS path_add PATH_add varname . PATH_rm [ ...] PATH . PATH . Bash: https://www.gnu.org/software/bash/manual/html_node/Pattern- Matching.html : echo $PATH # output: /dontremove/me:/remove/me:/usr/local/bin/:... PATH_rm '/remove/*' echo $PATH # output: /dontremove/me:/usr/local/bin/:... load_prefix prefix_path . ./configure --prefix=$prefix_path && make install prefix_path . : CPATH LD_LIBRARY_PATH LIBRARY_PATH MANPATH PATH PKG_CONFIG_PATH : ./configure --prefix=$HOME/rubies/ruby-1.9.3 make && make install # Then in the .envrc load_prefix ~/rubies/ruby-1.9.3 semver_search SemVer (X.Y.Z) . : $ tree . . |-- dir |-- program-1.4.0 |-- program-1.4.1 |-- program-1.5.0 $ semver_search "dir" "program-" "1.4.0" 1.4.0 $ semver_search "dir" "program-" "1.4" 1.4.1 $ semver_search "dir" "program-" "1" 1.5.0 layout (semantic dispatch) . layout go "$(direnv_layout_dir)/go" GOPATH . "$PWD/bin" PATH . layout julia JULIA_PROJECT . layout node "$PWD/node_modules/.bin" PATH ..SS layout opam opam env . layout php "$PWD/vendor/bin" PATH . layout perl local::lib perl . http://search.cpan.org/dist/local-lib/lib/local/lib.pm . layout pipenv layout python Pipenv virtualenv Pipfile . PIPENV_PIPFILE . Pipenv .env . dotenv .env . layout pyenv [ ...] layout python pyenv virtualenv Python . pyenv . layout python [] virtualenv $PWD/.direnv/python-$python_version . egg . python python ( : layout python python3). virtualenv $PWD/.direnv/virtualenv direnv . layout python3 layout python python3 layout ruby GEM_HOME $PWD/.direnv/ruby/RUBY_VERSION . gem . bundler (wrapper) bundle exec . use [] . : use_ruby() { echo "Ruby $1" } use ruby 1.9.3 # output: Ruby 1.9.3 use julia Julia . $JULIA_VERSIONS Julia . $JULIA_VERSION_PREFIX $JULIA_VERSIONS ( julia-) . . (.envrc): use julia 1.5.1 # loads $JULIA_VERSIONS/julia-1.5.1 use julia 1.5 # loads $JULIA_VERSIONS/julia-1.5.1 use julia master # loads $JULIA_VERSIONS/julia-master use rbenv rbenv ruby PATH . use nix [...] nix-shell . default.nix shell.nix ( use nix -p ocaml). : http://nixos.org/nix/manual/#sec-nix-shell use flake [] derivation nix develop . devShell flake.nix . <> "nixpkgs#hello" hello nixpkgs . flakes . Flakes ..SS use guix [...] guix shell. guix shell . use guix hello hello . hello --development : use guix --development hello. --file . : https://guix.gnu.org/manual/en/guix.html#Invoking- guix-shell rvm [...] rvm . use node []: NodeJS . NodeJS ( 4.2) (fuzzy match) . '.nvmrc' '.node-version' . : o $NODE_VERSIONS () Node . . o $NODE_VERSION_PREFIX () [="node-v"] . use vim [] vim ( .vimrc.local) DIRENV_EXTRA_VIMRC . direnv/direnv.vim . (source) . watch_file [ ...] (watch-list) direnv . direnv (prompt) . (.envrc): watch_file Gemfile direnv_version direnv version_at_least . .envrc . strict_env [ ...] . .envrc : o if while until (!) (&& ||) . o ( declare local) . . ( ): strict_env has curl (): strict_env has curl . . ( ): unstrict_env has curl (): unstrict_env has curl on_git_branch [] git branch_name 0 . 0 . git . 1 . .git/HEAD . (.envrc): if on_git_branch child_changes; then export MERGE_BASE_BRANCH=parent_changes fi if on_git_branch; then echo "Thanks for contributing to a GitHub project!" fi (COPYRIGHT) MIT - (C) 2019 @zimbatm (SEE ALSO) direnv(1), direnv.toml(1) direnv 2019 DIRENV-STDLIB(1)