.modulesbeginenv 中的多個 MODULEPATH 條目

.modulesbeginenv 中的多個 MODULEPATH 條目

我正在路徑/程式碼專案之間切換。在每個地方我都有不同的模組。為了處理這個問題,有一個設定腳本可以修改要使用的內容。這是透過工具“模組”來處理的。

筆記: modules是一個用於管理環境的包,允許重新配置環境,以便各種應用程式存在$PATH或不存在。

問題是每次更新模組路徑時都會將新條目新增至檔案中~/.modulesbeginenv

#!/user/bin/env tcsh

module unuse $path1
module use $path2

module add project_module

~/.modulebeginenv這個簡短的範例在每次呼叫時添加兩行。先MODULEPATH='paths'$path1,後MODULEPATH='paths'$path2

對我來說,更改是附加而不是更新似乎很奇怪。是否有任何配置來控制此問題或有其他方法來解決它?

答案1

查看使用情況,您看到的行為聽起來像是我對子命令的期望use

  module use [-a |--append] directory [directory...]

預設情況下,此子命令將目錄新增至$MODULEPATH環境變數。如果使用-aor--append參數,則目錄將被追加到$MODULEPATH.

使用子命令unuse它將刪除您提供的任何路徑。

  module unuse directory [directory...]

從 $MODULEPATH 環境變數中刪除該目錄。

如果您想完全覆蓋變量,您可以隨時使用該setenv命令。

  setenv variable value

將環境變數設定為值。該setenv命令還將更改進程的環境。使用 Tcl 的 env 關聯數組的引用將引用使用該setenv命令所做的更改。使用 Tcl 的 env 關聯數組進行的更改不會像 setenv 命令那樣更改使用者的環境變數。以這種方式進行的環境變更只會影響模組解析過程。該命令對於在or命令setenv之前更改環境也很有用。當模組檔案被卸載時,變成.如果環境變數已定義,則在載入模組檔案時它將被覆蓋。隨後的卸載將取消設定環境變數 - 先前的值無法恢復! (除非你明確處理它......見下文。)......execsystemsetenvunsetenv

參考

相關內容