.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

参考

相关内容