7

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

由于某种原因,该.envrc文件未加载到此新外壳中。如果手动退出工作目录并再次进入,则加载环境变量。

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

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

4

3 回答 3

10

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

于 2019-07-10T14:44:43.220 回答
1

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

VAR=x

不工作

相反,使用:

export VAR=x
于 2022-02-22T08:01:45.357 回答
1

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

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

eval "$(direnv hook bash)"

它会在你的 bash 开始时激活一个钩子。如果您的 bashrc 未加载,请查看 bash_profile / bashrc 以查看哪些调用了谁。

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

于 2021-12-13T09:32:59.097 回答