- fix: incorrect escape sequences during Loads under git-bash (Windows) (#1085)
- fix: skip some tests for IBM Z mainframe's z/OS operating system (#1094)
- fix: stdlib: use_guix: Switch to guix shell. (#1045)
- fix: stat the already open rc file rather than another path based one on it (#1044)
- fix: remove deprecated io/ioutil uses (#1042)
- fix: spelling fixes (#1041)
- fix: appease Go 1.19 gofmt (#1040)
- fix: pass BASH_PATH to make, matches the nixpkgs derivation (#1006)
- fix: stdlib/layout_python: exclude patchlevel from $python_version (#1033)
- doc: add Windows installation with winget (#1096)
- doc: link 12factor webpage for more clarity (#1095)
- website: add Plausible analytics
- doc: Add stdlib's layout_pyenv to docs (#969)
- doc: Fix broken link (#991)
- doc: Minor typo fix (#1013)
- doc:
$XDG_CONFIG_HOME/direnv/direnv.toml
=> add (typically ~/.config/direnv/direnv.toml) (#985) - doc: add quickenv to Related projects (#970)
- feat: Update layout anaconda to accept a path to a yml file (#962)
- feat: install.sh: can specify direnv version (#1012)
- fix: elvish: replace deprecated
except
withcatch
(#987) - fix: installer.sh: make direnv executable for all
- fix: path escaping (#975)
- fix: stdlib: only use ANSI escape on TTY (#958)
- fix: test: remove mentions of DIRENV_MTIME (#1009)
- fix: test: use lowercase -d flag for base64 decoding of DIRENV_DIFF (#996)
- update: build(deps): bump github.com/BurntSushi/toml from 1.1.0 to 1.2.0 (#974)
- feat: Support custom VIRTUAL_ENV for layout_python (#876)
- fix: vendor go-dotenv (#955)
- feat: Add gha shell for GitHub Actions (#910)
- feat: Enable ppc64le builds (#947)
- feat: allow conda environment names to be detected from environment.yml (#909)
- feat: source_up_if_exists: A strict_env compatible version of source_up (#921)
- feat: Expand ~/ in whitelist paths (#931)
- feat: Add "block" and "revoke" as aliases of the "deny" command (#935)
- feat: Add "permit" and "grant" as aliases of the "allow" command (#935)
- fix: update go-dotenv
- fix: fetchurl: store files as hex (#930)
- fix: fetchurl: only store 200 responses (#944)
- fix: Ensure status log messages are printed with normal color (#884)
- fix: Clarify handling of .env files (#941)
- fix: Update shell_elvish.go (#896)
- fix: stdlib.sh: remove dependency on tput (#932)
- fix: Use setenv in vim to allow non alphanumeric vars (#901)
- fix: install.sh: add information about bin_path (#920)
- fix: Treat
mingw*
as windows (direnv#918) (#919) - fix: man: clarify paths (#929)
- fix: installation.md: Fix Fedora package link (#915)
- Merge pull request #874 from direnv/refactor
- chore: rc: stop using --noprofile --norc
- chore: rc: prepare stdin earlier
- chore: rc: install interrupt handler earlier
- chore: stdlib: factor out stdlib preparation
- chore: fix CI
- chore: source_env: show full path (#870)
- chore: Sort shells in DetectShell
- chore: Enable codeql action (#938)
- chore: Set permissions for GitHub actions (#937)
- go: bump golang.org/x/sys for linux/loong64 support (#946)
- build(deps): bump actions/checkout from 2.4.0 to 3.0.0 (#922)
- build(deps): bump actions/checkout from 3.0.0 to 3.0.1 (#933)
- build(deps): bump actions/checkout from 3.0.1 to 3.0.2 (#936)
- build(deps): bump actions/setup-go from 2.1.5 to 3.0.0 (#923)
- build(deps): bump actions/setup-go from 3.0.0 to 3.1.0 (#943)
- build(deps): bump actions/setup-go from 3.1.0 to 3.2.0 (#950)
- build(deps): bump cachix/install-nix-action from 16 to 17 (#925)
- build(deps): bump github.com/BurntSushi/toml from 0.4.1 to 1.1.0 (#924)
- Don't load .env files by default (#911)
- doc:
~/.config/direnv/direnvrc
is the default - doc: fix the broken link to arch linux (#892)
- Re-add accidentally deleted comment line (#881)
- fix version test
- Allow skipping
.env
autoload (#878) - stdlib: add
env_vars_required
(#872) (#872) - Test whether version.txt contains semantic version (#871)
- FIX: version: trim surrounding spaces (#869)
- build(deps): bump actions/setup-go from 2.1.4 to 2.1.5 (#866)
- move most code under internal/cmd (#865)
- FIX: ignore .envrc and .env if they are not files (#864)
- Add automatic
.env
load (#845) - Resolve symlinks during
direnv deny
(#851) - update installer for Apple Silicon (#849)
- stdlib: use_flake handle no layout dir (#861)
- embed stdlib.sh (#782)
- embed version.txt
- go mod update
- make dist: remove references to Go
- stdlib: add use_flake function (#847)
- docs(direnv.toml) Add config.toml clarification (#831)
- docs(install): fix macos links (#841)
- Corrects stdlib link in Ruby docs (#837)
- stdlib.sh: Fix removal of temp file (#830)
- install.sh: add aarch64 support
- Updated conditional for zsh hook to be more forgiving (#808)
- Add -r flag for matching Git branches with a regexp (#800)
- Add docs about pipenv (#797)
- Enable syntax hilights to the quick demo code (#752)
- Fixed extra quotes for lower alpha characters (#783)
- Remove noisy warning about PS1 again (#781)
- Merge pull request #779 from wingrunr21/go_1_16
- Build for darwin/arm64. Resolves #738
- Update to go 1.16
- test: Fix errors for elvish test (#767)
- tcsh: fix variable escaping (#778)
- Change DESTDIR to PREFIX in development.md (#774)
- go: use the /v2 prefix (#765)
- Relax README's recommendation for nix-direnv (#763)
- man/direnv.1.md: add FILES section (fix #758) (#759)
- Add/update fish tests (#754)
- build(deps): bump golang.org/x/mod from 0.4.0 to 0.4.1 (#749)
- Fix typo "avaible" in install.sh (#750)
- docs: improve the use_node documentation
- fixed fish shell hook to work with eval (#743)
- dist: remove darwin/386
- nix: update to [email protected]
- packaging: stop vendoring the Go code (#739)
- packaging: change packaging. DESTDIR -> PREFIX, fish hook (#741)
- updated fish hook support issue (#732)
- ci: add basic windows CI (#737)
- test: fix shellcheck usage in ./test/stdlib.bash
- test: fix use_julia test for NixOS
- remove dead code: rootDir
- fix: create temp dir in current working dir for one test (#735)
- Add
dotenv_if_exists
(#734) - stdlib: add watch_dir command (#697)
There was a generation issue in 2.25.1. This release only bumps the version to do another release.
- stdlib.go: re-generate (fixes #707)
- README: remove old Azure badge
- build(deps): bump golang.org/x/mod from 0.3.0 to 0.4.0 (#730)
- dist: add linux/arm64 and linux/ppc64
- Added use_nodenv to stdlib (#727)
- Fix proposal for #707, broken direnv compatibility under Windows (#723)
- fix: layout anaconda <env_name_or_prefix> (#717)
- Add on_git_branch command to detect whether a specific git branch is checked out (#702)
- direnv_load: avoid leaking DIRENV_DUMP_FILE_PATH (#715)
- Add strict_env and unstrict_env (#572)
- stdlib: add
use_vim
to source local vimrc (#497) - stdlib: add source_env_if_exists (#714)
- Wording (#713)
- build(deps): bump actions/checkout from v2.3.3 to v2.3.4 (#709)
- build(deps): bump cachix/install-nix-action from v11 to v12 (#710)
- Fix XDG_CACHE_HOME path (#711)
- rc: make file existence check more robust (#706)
- fix: handle links on Mac when using
allow
(#696) - fix: use restored env in exec (#695)
- stdlib: add basename and dirname from realpath (#693)
- stdlib.sh: remove tabs
- dist: compile all the binaries statically
- stdlib: add source_url function (#562)
- direnv: add fetchurl command (#686)
- shell: Update Elvish hook to replace deprecated
explode
(#685)
- Look for stdlib in DIRENV_CONFIG (#679)
- stdlib: use Bash 3.0-compatible array expansion (#676)
- Clarify path to direnv.toml (#678)
- stdlib/use_julia: fix a bug in parameter substitution for empty or (#667)
- man: update the layout_go documentation
- stdlib: adds GOPATH/bin to PATH (#670)
- stdlib: use_julia (#666)
- stdlib: semver_search (#665)
- direnv-stdlib.1: add layout julia (#661)
- README: spelling correction (#660)
- README.md: add shadowenv to similar projects (#659)
- docs: remove Snap from the installations
- OSX -> macOS (#655)
- Update shell_fish.go to use \X for UTF encoding (#584)
- Change XDG_CONFIG_DIR to XDG_CONFIG_HOME (#641)
- Streamline core algorithm of export and exec (#636)
- test: add failure test-case (#637)
- Replace
direnv expand_path
with pure bash (#631) - Fix #594 - write error to fd 3 on Windows (#634)
- Make direnv hook output work on Windows (#632)
- Update hook.md to remove ">" typo in Fish instructions (#624)
- stdlib:
layout go
adds layout dir to GOPATH (#622) - direnv-stdlib.1: add layout php (#619)
- stdlib: add PATH_rm [ ...] (#615)
- Error handling tuples (#610)
- Merge pull request #607 from punitagrawal/master
- test: elvish: Fix evaluation function
- stdlib.sh: Re-write grep pattern to avoid shell escape
- man: Escape '.' at the beginning of line to remove manpage warning
- stdlib: fix direnv_config_dir usage (#601)
- direnv version: improve error message (#599)
- README: fix NixOS link in installation.md (#589)
- stdlib: add direnv_apply_dump (#587)
- Simplify direnv_load and make it work even when the command crashes. (#568)
- docs: fix fish installation instruction
- test: test for utf-8 compatibility
- config: add [global] section
- config: add strict_env option
- config: fix warn_timeout parsing (#582)
- Github action for releases
- config: fix the configuration file selection
- stdlib: fix shellcheck warnings
Making things stable again.
- stdlib: revert the
set -euo pipefail
change. It was causing too many issues for users. - direnv allow: fix the allow migration by also creating the parent target directory.
Fix release
- stdlib: fix unused variable in
use node
- stdlib: fix unused variable in
source_up
- test: add stdlib test skeleton
- add dist release utility
This is a massive release!
You can now hit Ctrl-C during a long reload in bash and zsh and it will not loop anymore.
Commands that use direnv_load
won't fail when there is an output to stdout
anymore (eg: use_nix
).
Direnv now also loads files from .config/direnv/lib/*.sh
. This is intended
to be used by third-party tools to augment direnv with their own stdlib
functions.
The .envrc
is now loaded with set -euo pipefail
. This will more likely
expose issues with existing .envrc
files.
- Update README.md (#536)
- Add link to asdf-direnv. (#535)
- docs: fix invalid link (#533)
- adds experimental curl based installer (#539)
- change where the allow files are being stored
- direnv status: also show the config
- direnv exec: improve the error message
- warn if PS1 is being exported
- handle SIGINT during export in bash
- export: display the full RC path instead of a relative one
- direnv exec: the DIR argument is always required (#493)
- ci: use GitHub Actions instead of Azure Pipelines
- staticcheck (#543)
- use go modules
- make: handle when /dev/stderr doesn't exist (#491)
- site: use jekyll to render the website
- Pin nixpkgs to current NixOS 19.09 channel (#526)
- fix elvish hook
- Use
fish_preexec
hook instead offish_prompt
(#512) - Use
fish_postexec
to make sure direnv hook executed 'after' the directory has changed when usingcd
. - improve zsh hook (#514)
- rename the configuration from config.toml to direnv.toml (#498)
- add warn_timeout option. DIRENV_WARN_TIMEOUT is now deprecated.
direnv_load
can now handle stdout outputs- stdlib: add layout_julia
- Handle failing pipenv on empty file and avoid an extra pipenv execution (#510)
- fix
source_env
behaviour when the file doesn't exists (#487) watch_file
can now watch multiple files in a single invocation (#524)layout_python
: prefer venv over virtualenv. Do not export VIRTUAL_ENV if $python_version is unavailable or a virtual environment does not exist/can't be created- Adds layout_pyenv (#505)
- Fix
source_up
docs to explain that search starts in parent directory (#518) - fix
path_add
to not leak local variables layout_pyenv
: support multiple python versions (#525)- Add a
direnv_version <version_at_least>
command to check the direnv version. dotenv
: handle undefined variables- source files from
.config/direnv/lib/*.sh
- stdlib: set
-euo pipefail
- ci: try to fix releases
- CHANGE: Use source instead of eval on fish hook
- DOC: Remove duplicate build badge (#465)
- DOC: add note about auth (#463)
- DOC: change nixos link (#460)
- FIX: Corrects reverse patching when using exec cmd. (#466)
- FIX: Perform stricter search for existing Anaconda environments (#462)
- FIX: arity mismatch for elvish (#482)
- FIX: avoid reloading on each prompt after error (#468)
- FIX: improve bash hook handlign of empty PROMPT_COMMAND (#473)
- FIX: improved the tests for bash, zsh, fish and tcsh (#469)
- MISC: migrated from Travis CI to Azure Pipelines (#484)
- FIX: file_times: check Stat and Lstat (#457)
- FIX: watched files now handle symlinks properly. Thanks @grahamc! #452
- NEW: add support for .env variable expansion. Thanks to @hakamadare!
- make: generate direnv.exe on windows (#417)
- travis: fix the release process
A lot of changes!
- stdlib: add DIRENV_IN_ENVRC (#414)
- Fix typo in readme. (#412)
- Merge pull request #407 from zimbatm/direnv-dump-shell
- direnv dump can now dump to arbitrary shells
- add a new "gzenv" shell
- move gzenv into new package
- shell: introduce a dump capability
- cleanup the shells
- Add alias '--version' to version command. Closes #377. (#404)
- Correctes spelling of openSUSE (#403)
- testing: elvish 0.12 is released now (#402)
- Merge pull request #397 from zimbatm/readme-packaging-status
- README: add packaging status badge
- README: remove equinox installation
- direnv show_dump: new command to debug encoded env (#395)
- Document possibility to unset vars (#392)
- stdlib: fix typo
- go dep: update Gopkg.lock
- make: don't make shfmt a dependency
- Avoid to add unnecessary trailing semicolon character (#384)
- add asdf to the list of known projects
- stdlib.go: re-generate
- Add PHP layout to stdlib (#346)
- make: fix formatting
- README: add build status badge
- Overhaul the build system (#375)
- stdlib, layout_pipenv: handle
$PIPENV_PIPFILE
(#371) - README: improve the source build instructions
- CHANGE: hook expands the direnv path. Ensures that direnv can be executed even if the PATH is changed #369.
- CHANGE: stdlib: direnv_load: disallow watching in child
Allows the
use nix --pure
scenario in #368 - README: add OpenSuSE to the list of distros
- Revert "use_nix: unset IN_NIX_SHELL"
- NEW: add support for elvish (#356)
- NEW: config: allow to disable stdin on eval (#351)
- DOC: Add the usage of source_up to the README (#347)
- FIX: default.nix: fix compilation
- FIX: lintian warnings (#340)
- FIX: release process (#342)
- FIX: support for go 1.10 (#339)
- NEW: TOML configuration file! (#332, #337)
- NEW: support for allow folder whitelist (#332)
- NEW: add anaconda support (#312)
- CHANGE: use_nix: unset IN_NIX_SHELL
- NEW: Add support for Pipenv layout (#314)
- CHANGE: direnv version: make public
- FIX: direnv edit: run the command through bash
- FIX: website: update ditto to v0.15
- FIX: fixes dotenv loading issue on macOS
''=''
- FIX: direnv edit: fix path escaping
- FIX: stdlib: fix find_up
- FIX: stdlib: use absolute path in source_up
- FIX: remove ruby as a build dependency
- FIX: go-dotenv: update to latest master to fix a parsing error
- FIX: stdlib: make direnv_layout_dir lazy (#298)
- NEW: stdlib: configurable direnv_layout_dir
- CHANGE: stdlib: source the direnvrc directly
- FIX: permit empty NODE_VERSION_PREFIX variable
- FIX: pwd: Don't use -P to remove symlinks (#295)
- FIX: also reload when mtime goes back in time
- FIX: Prevent
$HOME
path from being striked (#287) - BUILD: use the new
dep
tool to manage dependencies - BUILD: dotenv: move to vendor folder
- stdlib layout_python: fixes on no arg
- FIX: stdlib path_add(), see #278
- FIX: install from source instructions
- NEW: support multiple items in path_add and PATH_add (#276)
- NEW: add a configurable DIRENV_WARN_TIMEOUT option (#273)
- CHANGE: rewrite the dotenv parsing, now supports commented lines
- CHANGE: pass additional args to virtualenv (#261)
- FIX: stdlib watch_file(): escaping fix
- FIX: only output color if $TERM is not dumb (#264)
- FIX: the watch_file documentation
- FIX: node version sorting (#255)
- FIX: Typo in MANPATH_add always generates "PATH missing" error. (#256)
- FIX: only deploy the go 1.8 version
- NEW: stdlib.sh: introduce MANPATH_add (#248)
- NEW: provide packages using the equinox service
- CHANGE: test direnv with go 1.8 (#254)
- FIX: Add warning about source_env/up
- FIX: go-md2man install instruction
- NEW:
use guix
(#242) - CHANGE: use go-md2man to generate the man pages
- FIX: tcsh escaping (#241)
- FIX: doc typos and rewords (#226)
- NEW: use_nix() is now watching default.nix and shell.nix
- NEW: Allow to fix the bash path at built time
- FIX: Panic on
direnv current
with no argument - FIX: Permit empty NODE_VERSION_PREFIX variable
- FIX: layout_python: fail properly when python is not found
- FIX: travis dist release
- NEW:
direnv export json
to facilitate IDE integration - NEW: watch functionality thanks to @avnik Now direnv also reload on associate .env and .envrc changes.
- NEW: stdlib
watch_file
function thanks to @avnik Allows to monitor more files for change. - NEW: stdlib
use node
function thanks to @wilmoore - NEW:
direnv prune
to remove old allowed files thanks to @punitagrawal Only works with newly-generated files since we're not storing the path inside of them.
- NEW: use_nix() helper to stdlib. Thanks @gfxmonk
- FIX: Added SHELLOPTS to ignored vars. Thanks @fernandomora
- FIX: Removed shellcheck offenses in the stdlib, better escaping
- FIX: typos. Thanks @camelpunch, @oppegard
- FIX: source_env handles missing .envrc gracefully. Thanks @gerhard
- FIX: Empty variable as unloading in Vim. Thanks @p0deje
- FIX: Corrected spelling mistake in deny command. Thanks @neanias
- NEW: tcsh is now supported ! Thanks @bbense
- CHANGE:
direnv dump
now ignoresBASH_FUNC_
exports. Thanks @gfxmonk - CHANGE: Interactive input during load is now possible. Thanks @toao
- FIX: allow workaround for tmux users:
alias tmux='direnv exec / tmux'
- FIX: hardened fish shell escaping thanks to @gfxmonk
Thanks @bbense @vially and @dadooda for corrections in the docs
- NEW: Use a different virtualenv per python versions for easier version switching. Eg: ./.direnv/python-${python_version}
- NEW: Makes
layout python3
a shortcut forlayout python python3
. Thanks @ghickman ! - NEW: Allows to specify which executable of python to use in
layout_python
- CHANGE:
layout python
now unsets $PYTHONHOME to better mimic virtualenv - CHANGE: Don't make virtualenvs relocatable. Fixes #137
- OTHER: Use Travis to push release builds to github
- NEW: Try to detect an editor in the PATH if EDITOR is not set.
- NEW: Preliminary support for vim
- NEW: New site: put the doc inside the project so it stays in sync
- NEW: Support for Cygwin - Thanks @CMCDragonkai !
- NEW: Allow to disable logging by setting an empty
DIRENV_LOG_FORMAT
- NEW: stdlib
layout perl
. Thanks @halkeye ! - CHANGE: layout ruby: share the gem home starting from rubygems v2.2.0
- CHANGE: Allow arbitrary number of args in
log_status
- CHANGE: Bump command timeout to 5 seconds
- FIX: Adds selected bash executable in
direnv status
- FIX: man changes, replaced abandoned ronn by md2man
- FIX:
make install
was creating a ./bin directory - FIX: issue #114 - work for blank envs. Thanks @pwaller !
- FIX: man pages warning. Thanks @punitagrawal !
- FIX: Multi-arg EDITOR was broken #108
- FIX: typos in doc. Thanks @HeroicEric and @lmarlow !
- FIX: If two paths don't have a common ancestors, don't make them relative.
- FIX: missing doc on layered .envrc. Thanks @take !
- NEW: DIRENV_LOG_FORMAT environment variable can be used tocontrol log formatting
- NEW:
direnv exec [DIR] <COMMAND>
to execute programs with an .envrc context - CHANGE: layout_python now tries to make your virtualenv relocatable
- CHANGE: the export diff is not from the old env, not the current env
- CHANGE: layout_go now also adds $PWD/bin in the PATH
- FIX: Hides the DIRENV_ variables in the output diff. Fixes #94
- FIX: Makes sure the path used in the allow hash is absolute. See #95
- FIX: Set the executable bit on direnv on install
- FIX: Some bash installs had a parse error in the hook.
The last release was heavily broken. Ooops !
- FIX: Refactored the whole export and diff mechanism. Fixes #92 regression.
- CHANGE: DIRENV_BACKUP has been renamed to DIRENV_DIFF
Restart your shells on upgrade, the format of DIRENV_BACKUP has changed and is incompatible with previous versions.
- NEW:
direnv_load <command-that-outputs-a-direnv-dump>
stdlib function - CHANGE: Only backup the diff of environments. Fixes #82
- CHANGE: Renames
$DIRENV_PATH
to$direnv
in the stdlib. - CHANGE: Allow/Deny mechanism now includes the path to make it more secure.
- CHANGE:
direnv --help
is an alias todirenv help
- CHANGE: more consistent log outputs and error messages
- CHANGE:
direnv edit
only auto-allows the .envrc if it's mtime has changed. - CHANGE: Fixes old bash (OSX) segfault in some cases. See #81
- CHANGE: The stdlib
dotenv
now supports more .env syntax - FIX: Restore the environment properly after loading errors.
- Added support for the fish shell. See README.md for install instructions.
- Stop recommending using $0 to detect the shell. Fixes #64.
- Makes the zsh hook resistant to double-hooking.
- Makes the bash hook resistant to double-hooking.
- More precise direnv allow error message. Fixes #72
- Fixes shell detection corner case
When upgrading from direnv 1.x make sure to restart your shell. The rest is relatively backward-compatible.
- changed the execution model. Everything is in a single static executable
- most of the logic has been rewritten in Go
- robust shell escaping (supports UTF-8 in env vars)
- robust eval/export loop, avoids retrys on every prompt if there is an error
- stdlib: added the
dotenv [PATH]
command to load .env files - command: added
direnv reload
to force-reload your environment