module load command in linux bash script
Solution 1
I had a similar problem, and found two solutions:
instead of running your script with
sh yourscript.shor./yourscript.sh, you could run it as. yourscript.shThis will source the module correctly and run the scriptif you don't want to use
. yourscript.sh, you can modify your shebang from#!/bin/shto#!/bin/bashas noted in DavidC's answer and run your script as./yourscript.shNote that running it assh yourscript.shwill not work
Solution 2
Okay, I think I know where is the problem. Try type module from the shell to see how module it is currently defined in your system. You will receive two options: either it is an alias or a function. This is because the module command is an alias or shell function.
Say your script is the following running.sh :
#!/bin/bash
module load python/2.7.3
python /home/hw1u16/project/trainAgent.py
(It is a good practice to add the shebang)
To sort out this problem you have two options:
- Option 1:
source the scitpt. In other words, do: source running.sh. This is exactly the same as typing the module command directly into your interactive shell. However, by doing ./running.sh, you are running a new, non-interactive shell. These generally do not have the standard aliases and shell functions set up.
- Option 2:
Find the initialization script that defines the module command and source it from the script
skwang
Updated on July 09, 2022Comments
-
skwang over 1 yearI need to execute Python script in HPC cluster. Unfortunately, the default python version is just 2.6.6 and there is no numpy and scipy.
I can load these modules in command line
#module load /home/hw1u16/modules/2.7.3and
module load /home/hw1u16/modules/1.6.2However, when I write the bash script like this
module load /home/hw1u16/modules/2.7.3 module load /home/hw1u16/modules/1.6.2 python /home/hw1u16/project/trainAgent.pyIt warns me
ModuleCmd_Load.c(200):ERROR:105: Unable to locate a modulefile for '/home/hw1u16/modules' ModuleCmd_Load.c(200):ERROR:105: Unable to locate a modulefile for '/home/hw1u16/modules'I don't know what's wrong, could any guys help me? -
skwang about 6 yearsI have tried thesourcecommand, seemsmodule availcan be use in bash script, but when I writemodule load gcc/4.6.2ormodule load python/2.7.3. It warns me'ython(9):ERROR:105: Unable to locate a modulefile for 'python/2.7.3'.` -
DavidC. about 6 years@skwang This is the same error you reported before. Please, after writing the script as I wrote in the answer, dosource running.shand then./running.shin the same terminal -
Joshua Perrett over 1 yearThe shebang solution did not work for me (it also doesn't seem to be something DavidC said). The first solution worked great though. Didn't realise.was an alias forsource.