在 tcsh 中,我可以运行如下命令:
module add jdk/1.8.0_162
...使用这样定义的别名:
alias module 'eval `/app/modules/0/bin/modulecmd tcsh \!*`'
我正在尝试为 bash 获得与此等效的内容。
目前,我已经尝试为每个子命令创建一个单独的 bash 函数,如下所示:
function module_add {
/app/modules/0/bin/modulecmd bash add $1 2>>err.log
}
function module_rm {
/app/modules/0/bin/modulecmd bash rm $1 2>>err.log
}
function module_list {
/app/modules/0/bin/modulecmd bash list
}
java -version
module_list
module_rm 'j2re'
module_add 'jdk/1.8.0_162'
module_add 'gtk+/2.24.17'
module_list
java -version
我可以确定程序调用已经执行,因为不存在的模块(出于测试目的添加)gtk+/2.24.17 在 err.log 中创建了一个条目。
但是, java -version 仍然显示相同的旧版本,并且 module_list 不显示任何新模块。一切都在 tcsh 中运行良好(我使用模块添加别名代替)。我尝试了不同版本的模块命令。测试的最新版本是 3.2.10。结果在 RHEL6 和 RHEL7 上是一样的
任何想法如何解决这个问题?
编辑
基于一些聪明的评论,我尝试对 tcsh 使用完全相同的命令
/app/modules/0/bin/modulecmd tcsh add jdk/1.8.0_162
它给出了相同的结果。任何知道该命令和命令之间区别的人
module add jdk/1.8.0_162
在tcsh?
所以我想问题是关于 modulescmd 与 tcsh 别名有何不同module add
BR帕特里克