微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能在执行我的bash脚本时加载模块,但只有在采购它时?

我使用modules来控制我系统上的软件包,并将python / 2.7.2作为模块安装.我有一个简单的python可执行文件python_exe.py,我将从一个简单的’驱动’脚本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时,它卖给我“module:command not found”.但是,当我获取runit.sh时,它会正确加载模块.为什么是这样?

解决方法:

因为module命令是别名或shell函数
(参见“包初始化”)
module(1)).
当你说source runit.sh时,就像输入module命令一样
直接进入你的交互式shell.
但是当你说./runit.sh时,你正在运行一个新的非交互式shell.
非交互式shell
通常没有设置标准别名和shell函数.

module(1)说,
“模块包和模块命令已初始化
一个特定于shell的初始化脚本被引入shell时.
该脚本创建模块命令,
无论是作为别名还是shell函数,……“
如果需要在脚本中运行module命令,
找到定义模块命令的初始化脚本
并从脚本中获取它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐