【发布时间】:2021-05-06 03:56:07
【问题描述】:
我正在尝试为已安装在集群上的应用程序创建模块文件。要运行该程序,我必须运行一个名为“phenix_env.sh”的脚本,其中包含以下内容:
#!/bin/sh
#
export PHENIX="/src/phenix-1.19.2-4158"
export PHENIX_VERSION=1.19.2-4158
. $PHENIX/build/setpaths.sh
虽然“setpaths.sh”包含以下内容
# THIS IS AN AUTOMATICALLY GENERATED FILE.
# DO NOT EDIT! CHANGES WILL BE LOST.
ocwd="`pwd`"
if [ -n "$LIBTBX_BUILD_RELOCATION_HINT" ]; then
cd "$LIBTBX_BUILD_RELOCATION_HINT"
LIBTBX_BUILD_RELOCATION_HINT=
export LIBTBX_BUILD_RELOCATION_HINT
elif [ -n "$BASH_SOURCE" ]; then
LIBTBX_BUILD=`dirname "$BASH_SOURCE[0]"`
cd "$LIBTBX_BUILD"
else
cd "/util/opt/phenix/1.19.2/gcc/9.1/phenix-1.19.2-4158/build"
fi
LIBTBX_BUILD=`pwd -P`
export LIBTBX_BUILD
LIBTBX_OPATH="$PATH"
export LIBTBX_OPATH
PATH="$LIBTBX_BUILD/bin:$PATH"
export PATH
# DIALS_ENABLE_COMMAND_LINE_COMPLETION
[ -n "$BASH_VERSION" ] && {
source $(libtbx.find_in_repositories dials/util/autocomplete.sh) && source $LIBTBX_BUILD/dials/autocomplete/bash.sh || echo dials command line completion not available
}
cd "$ocwd"
ocwd=
alias libtbx.setpaths_all=". \"$LIBTBX_BUILD/setpaths_all.sh\""
alias libtbx.unsetpaths=". \"$LIBTBX_BUILD/unsetpaths.sh\""
if [ -n "$LIBTBX_OPATH" ]; then
LIBTBX_TMPVAL="$LIBTBX_OPATH"
else
LIBTBX_TMPVAL=
fi
export LIBTBX_TMPVAL
PATH=`libtbx.path_utility prepend LIBTBX_TMPVAL "$LIBTBX_BUILD/bin" < /dev/null`
export PATH
if [ "$PATH" = "L_I_B_T_B_X_E_M_P_T_Y" ]; then unset PATH; fi
LIBTBX_TMPVAL=
LIBTBX_OPATH=
LIBTBX_BUILD=
知道如何为它创建一个模块文件吗?
【问题讨论】:
-
这个模块应该做什么?运行那个脚本?请提供更多上下文
-
在HPC集群中,我们提供了一个模块文件给用户,即包含了所有的应用路径,用户可以加载模块并使用应用。因此用户可以使用命令“module load
”,它将所有可执行路径添加到用户路径,以便用户可以运行应用程序。 -
所以你想要一个在加载时执行该 shell 脚本的 Lua 模块?
-
没错!执行 phenix_env.sh 和“setpaths.sh”的 Lua 模块,因为“phenix_env.sh”调用“setpaths.sh”
标签: bash lua environment-modules modulefile