我正在使用模块来控制系统上的软件包,并且已python/2.7.2
作为模块安装。我有一个简单的python可执行文件python_exe.py
,我将从一个简单的“ driving”脚本中调用它runit.sh
。runit.sh
脚本看起来像:
#!/bin/bash
module load python/2.7.2
arg1=myarg1
arg2=15
arg3=$5
/path/to/python_exe.py -a $arg1 -b $arg2 -c $arg3
但是,当我刚运行时./runit.sh
,它向我出售“模块:找不到命令”。source runit.sh
但是,当我使用它时,它将正确加载模块。为什么是这样?
因为该module
命令是别名或shell函数(请参见module(1)中的“ Package Initialization ” )。当您说时,就像直接在交互式shell中键入命令一样。但是当您说时,您正在运行一个新的非交互式外壳。非交互式外壳程序通常没有设置标准别名和外壳程序功能。source runit.sh
module
./runit.sh
module(1)说:“当将特定于外壳程序的初始化脚本源到外壳程序时,将初始化Modules程序包和module命令。该脚本以别名或外壳函数的形式创建模块命令,……”如果需要module
在脚本中运行命令,请从脚本中找到定义module
命令的初始化source
脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句