В 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
Есть идеи, как решить эту проблему?
EDIT
Основываясь на некоторых умных комментариях, я попытался выполнить ту же команду для tcsh
/app/modules/0/bin/modulecmd tcsh add jdk/1.8.0_162
и это дало тот же результат. Любой, кто знает разницу между этой командой и
module add jdk/1.8.0_162
в tcsh?
Так что, я думаю, вопрос скорее в том, чем отличаются модули cmcm от псевдонима tcsh module add
BR
Patrik