Bash

有沒有設置目錄/項目本地環境變數的好方法?

  • January 12, 2022

我一直在從事幾個項目,它們需要不同的環境變數(例如,PATH對於不同版本的clang執行檔,PYTHONPATH對於幾個外部模組)。每當我在一個項目上工作時,我都必須自己修改這些環境變數(例如,更改.zshrc/.bashrcsource它);我有時會忘記並犯錯誤。

有沒有一種方法/項目可以幫助自動執行此操作,類似於virtualenv在 Python 中所做的那樣?

有成熟的工具旨在為特定目錄設置環境變數。

與為此設計的其他工具相比,direnv是其中最好的。主要好處之一是當您退出該目錄時,它支持unload環境變數。

direnv是shell的環境切換器。它知道如何掛鉤到 bash、zsh、tcsh、fish shell 和 elvish 以根據目前目錄載入或解除安裝環境變數。這允許特定於項目的環境變數,而不會弄亂~/.profile文件。

direnv其他類似工具之間的區別:

  • direnv用 Go 編寫,與用 Python 編寫的對應物相比更快
  • direnv支持從特定目錄退出時解除安裝環境變數
  • direnv覆蓋許多貝殼

類似項目

  • 環境模組- 最古老的(以一種好的方式)環境載入系統之一
  • autoenv - 輕量級;不支持解除安裝;用 Python 寫的慢
  • zsh-autoenv - autoenv 和smartcd的功能豐富的組合:進入/離開事件,嵌套,儲存(僅限 Zsh)。
  • ~~ asdf ~~,asdf 是一個外掛管理器,用於切換同一個執行檔的不同版本。根本不是環境切換器。

引用自:https://unix.stackexchange.com/questions/192118