shell 在带有 .envrc 的目录中启动时 Direnv 未加载环境

Direnv not loading environment when shell starts in a directory with .envrc

假设我在 shell 中,工作目录设置为包含 .envrc 文件的目录。当我现在在终端模拟器中打开一个新选项卡时,一个新的 shell 会启动到与原始 shell.

相同的工作目录中

由于某种原因,.envrc 文件没有加载到这个新的 shell 中。如果手动退出工作目录,再进入,会加载环境变量。

有没有办法让变量在创建 shell 时自动加载?

我是 运行 MacOS Mojave (10.14.4) 和 direnv 2.20.1,使用 bash 作为我的 shell。我正在通过 .bashrc.

加载 direnv 挂钩

在 macOS Mojave(可能还有旧版本)下,保存 .bashrc 无效。相反,使用 .bash_profile.

Is there a way to make the variables load automatically when the shell is created

您可以将其添加到您的 .bashrc

eval "$(direnv hook bash)"

它会在您 bash 的开头激活挂钩。 如果您的 bashrc 未加载,请查看 bash_profile / bashrc 以查看哪个呼叫了谁。

您可以尝试“source ~/.bashrc”,看看是不是您的 eval 命令写得不好,或者您的 bashrc 没有被调用。

我发现在我的 zsh 环境中我需要将 export 放在 .envrc 中每个变量的前面

VAR=x

不起作用

改为使用:

export VAR=x