Como usar o 'module load program / 1.1' dentro de um script bash?

2

Usando o CentOS 7.x, a maneira correta de os usuários "carregarem" o software para executar programas é executar através da linha de comando:

module load program/1.1

Qual é a maneira correta de executar este comando através de um script bash (por exemplo, para enviar trabalhos para um cluster computacional, etc.)? Pode-se fazer

source module load program/1.1

Quais são as outras opções?

    
por ShanZhengYang 21.12.2016 / 20:33

1 resposta

1

Um script de shell é apenas uma lista de comandos para executar, basicamente como se você os tivesse digitado na linha de comando. Então a maneira correta é:

module load program/1.1

... assim como você executaria na linha de comando. Observe que, se isso fornecer um comando não encontrado, você provavelmente precisará originar $MODULESHOME/init/<shell> (que configura o comando module ).

O comando module é na verdade uma função do shell, é assim que ele é capaz de manipular o ambiente do seu shell atual.

source faz algo diferente: essencialmente copia & cola o script de origem no seu. Portanto, se o script de origem definir funções, você poderá chamá-las. Se definir variáveis, mesmo as não exportadas, você poderá vê-las.

Agora, se você quiser escrever um script que carregue um monte de módulos para usar no seu shell interativo, então do seu shell interativo você precisa seu script , mas não module . O módulos FAQ explica isso.

    
por 21.12.2016 / 21:38