
Estoy cambiando entre rutas/proyectos de código. En cada lugar tengo diferentes módulos. Para manejar esto hay un script de configuración que modifica qué usar. Esto se maneja con la herramienta 'módulo'.
NOTA: modules
es un paquete para gestionar el entorno que permite reconfigurarlo para que varias aplicaciones estén presentes $PATH
o no.
El problema es que cada vez que se actualiza la ruta de un módulo se agrega una nueva entrada al archivo~/.modulesbeginenv
#!/user/bin/env tcsh
module unuse $path1
module use $path2
module add project_module
Este breve ejemplo agrega dos líneas en ~/.modulebeginenv
cada llamada. Primero MODULEPATH='paths'
sin $path1
y luego MODULEPATH='paths'
con $path2
.
Me parece extraño que el cambio se anexe en lugar de actualizarse. ¿Existe alguna configuración para controlar esto o alguna otra forma de solucionarlo?
Respuesta1
Al observar el uso, el comportamiento que está viendo suena como lo que esperaría del use
subcomando.
module use [-a |--append] directory [directory...]
De forma predeterminada, este subcomando antepone el directorio a la
$MODULEPATH
variable de entorno. Si se utiliza el argumento-a
o--append
, el directorio se agregará a$MODULEPATH
.
Con el subcomando unuse
eliminará cualquier ruta que proporcione.
module unuse directory [directory...]
Elimine el directorio de la variable de entorno $MODULEPATH.
Si desea anular completamente una variable, siempre puede usar el setenv
comando.
setenv variable value
Establezca la variable de entorno en valor. El
setenv
comando también cambiará el entorno del proceso. Una referencia que utilice la matriz asociativa env de Tcl hará referencia a los cambios realizados con elsetenv
comando. Los cambios realizados utilizando la matriz asociativa env de Tcl NO cambiarán la variable de entorno del usuario como el comando setenv. Un cambio de entorno realizado de esta manera solo afectará el proceso de análisis del módulo. Elsetenv
comando también es útil para cambiar el entorno antes del comandoexec
osystem
. Cuando se descarga un archivo de módulo,setenv
se convierte enunsetenv
. Si se definió la variable de entorno, se sobrescribirá mientras se carga el archivo del módulo. Una descarga posterior desactivará la variable de entorno: ¡el valor anterior no se puede restaurar! (A menos que lo maneje explícitamente... ver más abajo)....