Várias entradas de MODULEPATH em .modulesbeginenv

1

Estou alternando entre projetos de caminhos / código. Em cada lugar eu tenho módulos diferentes. Para lidar com isso, há um script de configuração que modifica o que usar. Isso é tratado com a ferramenta 'módulo'.

NOTA: modules é um pacote para gerenciar o ambiente permitindo que ele seja reconfigurado para que várias aplicações estão presentes no $PATH ou não.

O problema é que toda vez que um caminho de módulo é atualizado, uma nova entrada é adicionada ao arquivo ~/.modulesbeginenv

#!/user/bin/env tcsh

module unuse $path1
module use $path2

module add project_module

Este pequeno exemplo adiciona duas linhas a ~/.modulebeginenv em cada chamada. Primeiro MODULEPATH='paths' sem $path1 e, em seguida, MODULEPATH='paths' com $path2 .

Parece estranho para mim que a alteração seja anexada em vez de atualizada. Existe alguma configuração para controlar isso ou qualquer outra maneira de resolvê-lo?

    
por freefox 27.06.2014 / 17:33

1 resposta

1

Olhando para o uso, o comportamento que você está vendo parece com o que eu esperaria do subcomando use .

  module use [-a |--append] directory [directory...]

By default, this subcommand prepends the directory to the $MODULEPATH environment variable. If the -a or --append argument is used, then the directory will be appended to $MODULEPATH.

Com o subcomando unuse , ele removerá o (s) caminho (s) fornecido (s).

  module unuse directory [directory...]

Remove the directory from the $MODULEPATH environment variable.

Se você quiser substituir completamente uma variável, sempre poderá usar o comando setenv .

  setenv variable value

Set environment variable to value. The setenv command will also change the process' environment. A reference using Tcl's env associative array will reference changes made with the setenv command. Changes made using Tcl's env associative array will NOT change the user's environment variable like the setenv command. An environment change made this way will only affect the module parsing process. The setenv command is also useful for changing the environment prior to the exec or system command. When a modulefile is unloaded, setenv becomes unsetenv. If the environment variable had been defined it will be overwritten while loading the modulefile. A subsequent unload will unset the environment variable - the previous value cannot be restored! (Unless you handle it explicitly ... see below.)....

Referências

por 28.06.2014 / 02:47