Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux modulefile-模块卸载未取消设置环境变量_Linux_Tcl_Environment Modules_Modulefile - Fatal编程技术网

Linux modulefile-模块卸载未取消设置环境变量

Linux modulefile-模块卸载未取消设置环境变量,linux,tcl,environment-modules,modulefile,Linux,Tcl,Environment Modules,Modulefile,我有一个非常简单的模块文件: #%Module1.0##################################################################### puts stderr "Loading personal environment" proc ModulesHelp { } { puts stderr "\tLoads personal environment" puts stderr "" } setenv MYTEMPVAR som

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

#%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
根据unload模块,该命令应该将所有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的人(他们似乎没有那么受欢迎):

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

这显然是按预期工作:

似乎希望您运行
模块卸载示例\u modulefile
,而不给它模块文件的完整路径。

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

在旧版本中,
module unload
命令无法正确匹配在命令行上传递的完整路径modulefile与当前加载的模块。因此,不会卸载任何模块

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

正如邪恶的奥托所说,在旧的模块版本上,必须使用短模块名来卸载这个模块文件

$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test
$ module unload test
$ module list
No Modulefiles Currently Loaded.
在最新模块版本上获得的预期行为:

$ module -V
Modules Release 4.1.3 (2018-06-18)
$ module load ~/modules/test
$ module list
Currently Loaded Modulefiles:
 1) /home/user/modules/test  
$ module unload ~/modules/test
$ module list
No Modulefiles Currently Loaded.

链接断了。不确定问题出在哪里(或标题是什么)。
$ module -V
Modules Release 4.1.3 (2018-06-18)
$ module load ~/modules/test
$ module list
Currently Loaded Modulefiles:
 1) /home/user/modules/test  
$ module unload ~/modules/test
$ module list
No Modulefiles Currently Loaded.