
我正在路徑/程式碼專案之間切換。在每個地方我都有不同的模組。為了處理這個問題,有一個設定腳本可以修改要使用的內容。這是透過工具“模組”來處理的。
筆記: 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
環境變數。如果使用-a
or--append
參數,則目錄將被追加到$MODULEPATH
.
使用子命令unuse
它將刪除您提供的任何路徑。
module unuse directory [directory...]
從 $MODULEPATH 環境變數中刪除該目錄。
如果您想完全覆蓋變量,您可以隨時使用該setenv
命令。
setenv variable value
將環境變數設定為值。該
setenv
命令還將更改進程的環境。使用 Tcl 的 env 關聯數組的引用將引用使用該setenv
命令所做的更改。使用 Tcl 的 env 關聯數組進行的更改不會像 setenv 命令那樣更改使用者的環境變數。以這種方式進行的環境變更只會影響模組解析過程。該命令對於在or命令setenv
之前更改環境也很有用。當模組檔案被卸載時,變成.如果環境變數已定義,則在載入模組檔案時它將被覆蓋。隨後的卸載將取消設定環境變數 - 先前的值無法恢復! (除非你明確處理它......見下文。)......exec
system
setenv
unsetenv