为什么执行bash脚本时不能加载模块,而只能在采购时加载模块?

drjrm3

我正在使用模块来控制系统上的软件包,并且已python/2.7.2作为模块安装。我有一个简单的python可执行文件python_exe.py,我将从一个简单的“ driving”脚本中调用它runit.shrunit.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.shmodule./runit.sh

module(1)说:“当将特定于外壳程序的初始化脚本源到外壳程序时,将初始化Modules程序包和module命令。该脚本以别名或外壳函数的形式创建模块命令,……”如果需要module在脚本中运行命令,请从脚本中找到定义module命令的初始化source脚本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章