У меня очень простой файл модуля:
#%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 команда модуля 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 - это простой фрагмент кода, который устанавливает или добавляет записи в переменную PATH, MANPATH или другие переменные окружения
- modulefiles скрывает понятие различных типов оболочек
- Файлы модуля написаны на языке команд инструмента, Tcl и интерпретируются программой modulecmd через пользовательский интерфейс модуля.