有没有设置目录/项目本地环境变量的好方法?

Hon*_*hen 13 shell bash zsh environment-variables

我一直在做几个项目,它们需要不同的环境变量(例如,PATH对于不同版本的clang可执行文件,PYTHONPATH对于几个外部模块)。每当我在一个项目上工作时,我必须自己修改这些环境变量(例如,更改.zshrc/.bashrcsource它);我有时会忘记并犯错。

是否有一种方法/项目可以帮助自动执行此操作,类似于virtualenv在 Python 中所做的工作?

Sim*_*mba 10

有一些成熟的工具可以为特定目录设置环境变量。

与其他为此设计的工具相比,direnv是其中最好的。主要好处之一是它支持在您退出该目录时卸载环境变量。

direnv是 shell 的环境切换器。它知道如何钩入 bash、zsh、tcsh、fish shell 和 elvish 以根据当前目录加载或卸载环境变量。这允许特定于项目的环境变量而不会弄乱~/.profile文件。

是什么让direnv其他类似的工具之间的不同:

  • direnv用 Go 编写,与用 Python 编写的对应物相比更快
  • direnv从特定目录退出时支持卸载环境变量
  • direnv 覆盖许多壳

类似项目

  • 环境模块- 最古老的(以一种好的方式)环境加载系统之一
  • autoenv - 轻量级;不支持卸载;用 Python 写的很慢
  • zsh-autoenv - 功能丰富的 autoenv 和smartcd 组合:进入/离开事件、嵌套、隐藏(仅限 Zsh)。
  • asdf - 具有插件系统的纯 bash 解决方案