【问题标题】:Direnv not loading environment when shell starts in a directory with .envrc当 shell 在具有 .envrc 的目录中启动时,Direnv 未加载环境
【发布时间】:2019-11-14 07:29:56
【问题描述】:

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

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

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

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

【问题讨论】:

  • direnv status 在原始 shell 与新 shell 中的输出是什么?

标签: bash macos environment-variables terminal.app direnv


【解决方案1】:

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

【讨论】:

  • 在 Catalina 中保存 .bashrc 中的钩子效果很好
【解决方案2】:

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

你可以把它添加到你的 .bashrc 中

eval "$(direnv hook bash)"

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

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

【讨论】:

    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多