Múltiplas entradas MODULEPATH em .modulesbeginenv

Múltiplas entradas MODULEPATH em .modulesbeginenv

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

OBSERVAÇÃO: modulesé um pacote para gerenciamento do ambiente permitindo que ele seja reconfigurado para que diversas aplicações estejam presentes $PATHou não.

O problema é que cada 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 ~/.modulebeginenva cada chamada. Primeiro MODULEPATH='paths'sem $path1e depois MODULEPATH='paths'com $path2.

Parece-me estranho que a alteração seja anexada em vez de atualizada. Existe alguma configuração para controlar isso ou alguma outra forma de resolver?

Responder1

Observando o uso, o comportamento que você está vendo parece o que eu esperaria do usesubcomando.

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

Por padrão, este subcomando precede o diretório à $MODULEPATHvariável de ambiente. Se o argumento -aou --appendfor usado, o diretório será anexado a $MODULEPATH.

Com o subcomando, unuseele removerá todos os caminhos que você fornecer.

  module unuse directory [directory...]

Remova o diretório da variável de ambiente $MODULEPATH.

Se você quiser substituir completamente uma variável, você sempre pode usar o setenvcomando.

  setenv variable value

Defina a variável de ambiente como valor. O setenvcomando também mudará o ambiente do processo. Uma referência usando o array associativo env do Tcl fará referência às alterações feitas com o setenvcomando. As alterações feitas usando o array associativo env do Tcl NÃO alterarão a variável de ambiente do usuário como o comando setenv. Uma alteração de ambiente feita desta forma afetará apenas o processo de análise do módulo. O setenvcomando também é útil para alterar o ambiente antes do comando execou system. Quando um modulefile é descarregado, setenvtorna-se unsetenv. Se a variável de ambiente tiver sido definida, ela será substituída durante o carregamento do modulefile. Um descarregamento subsequente irá desmarcar a variável de ambiente - o valor anterior não pode ser restaurado! (A menos que você lide com isso explicitamente ... veja abaixo.)....

Referências

informação relacionada