modulefile - 模块卸载不会取消设置环境变量

时间:2011-07-08 01:39:48

标签: linux tcl environment-modules

我有一个非常简单的模块文件:

#%Module1.0#####################################################################
puts stderr "Loading personal environment"
proc ModulesHelp { } {
    puts stderr "\tLoads personal environment"
    puts stderr ""
}
setenv MYTEMPVAR sometext

这是我的命令行:

> env | grep MYTEMPVAR
> module load ~/wa/example_modulefile
Loading personal environment
> env | grep MYTEMPVAR
MYTEMPVAR=sometext
> module unload ~/wa/example_modulefile
> env | grep MYTEMPVAR
MYTEMPVAR=sometext

根据modulefile man page卸载模块命令,应该将所有setenv转为unsetenv,但它似乎没有工作。有谁知道我在这里做错了什么?

更多信息:

> module --version
VERSION=3.2.6
DATE=2007-02-14

AUTOLOADPATH=undef
BASEPREFIX="/usr/share"
BEGINENV=99
CACHE_AVAIL=undef
DEF_COLLATE_BY_NUMBER=undef
DOT_EXT=""
EVAL_ALIAS=1
HAS_BOURNE_FUNCS=1
HAS_BOURNE_ALIAS=1
HAS_TCLXLIBS=undef
HAS_X11LIBS=1
LMSPLIT_SIZE=undef
MODULEPATH="/company/tech/tools/modules/sites/$SITE/Linux/:/company/tech/tools/modules/projects"
MODULES_INIT_DIR="/usr/share/Modules/init"
PREFIX="/usr/share/Modules"
TCL_VERSION="8.4"
TCL_PATCH_LEVEL="8.4.19"
TMP_DIR="/tmp"
USE_FREE=undef
VERSION_MAGIC=1
VERSIONPATH=undef
WANTS_VERSIONING=0
WITH_DEBUG_INFO=undef

Hello World

> env | grep SHELL
SHELL=/bin/tcsh

对于那些不熟悉模块文件的人(他们似乎并不那么受欢迎):

  • modulefile是一个简单的代码,用于设置或添加PATH,MANPATH或其他环境变量的条目
  • modulefiles隐藏了不同类型的shell的概念
  • 模块文件以工具命令语言Tcl编写,并由modulecmd程序通过模块用户界面解释

2 个答案:

答案 0 :(得分:1)

这显然按预期工作:http://sourceforge.net/tracker/?func=detail&aid=2384340&group_id=15538&atid=115538

看起来你应该运行module unload example_modulefile而不给它模块文件的完整路径。

答案 1 :(得分:0)

较新版本的模块(> = 4.0)正确卸载了此完整路径模块文件。

对于较旧的版本,public function getTable() { if (is_null($this->_table)) { $this->_table = Engine_Api::_()->getDbtable('videoCategories', 'sitevideo'); } error_log("Video category table: " . $this->_table->info('name')); return $this->_table; } 命令无法正确地将在命令行上传递的完整路径模块文件与当前加载的模块匹配。结果,没有模块被卸载。

旧版本(<4.0)上的可复制问题:

module unload

正如邪恶的otto所说,在较旧的模块版本上,必须使用简短的模块名称来卸载此模块文件

$ module -V | grep ^VERSION=
VERSION=3.2.11
$ module load ~/modules/test
$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test
$ module unload ~/modules/test
$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test

在最新模块版本上获得的预期行为:

$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test
$ module unload test
$ module list
No Modulefiles Currently Loaded.