按目录自动加载/卸载环境变量
direnv 在进入目录时加载 .envrc,离开时卸载。它适合为不同项目设置 PATH、API endpoint、虚拟环境等,避免污染全局 shell。
# ~/.bashrc / ~/.zshrc
eval "$(direnv hook bash)"
eval "$(direnv hook zsh)"
# 项目根目录
echo 'export APP_ENV=dev' > .envrc
direnv allow
# .envrc
layout python
use node 20
dotenv
.envrc 默认被拒绝;必须 direnv allow,这是安全设计。.envrc 是可执行 shell;不要从不可信仓库直接 allow。dotenv 会加载 .env,但变量覆盖顺序要确认。.envrc 可提交,.env 通常忽略。direnv status、direnv reload,不要直接改内部缓存。