Module 如何与鱼一起使用lmod?

Module 如何与鱼一起使用lmod?,module,fish,Module,Fish,虽然lmod从7.4版开始支持fish,但我必须使用旧版本的服务器。我怎样才能使它与鱼一起工作?(即使容量有限。)此解决方案允许我运行命令,如模块加载R。在一般情况下,它可能会失败 定义一个便利功能,如下所示: function module eval $LMOD_CMD bash $argv | lmod_bash_to_fish.py | sour

虽然lmod从7.4版开始支持fish,但我必须使用旧版本的服务器。我怎样才能使它与鱼一起工作?(即使容量有限。)

此解决方案允许我运行命令,如
模块加载R
。在一般情况下,它可能会失败

定义一个便利功能,如下所示:

function module                                                                     
    eval $LMOD_CMD bash $argv | lmod_bash_to_fish.py | source -
end
其中
lmod_bash_to_fish.py
包含以下内容:

#!/usr/bin/env python3

import re
import sys

f = sys.stdin

while True:
    line = f.readline()
    if not line:
        break

    match = re.match(r'^(\w+)="(.+)";\n$', line)
    if not match:
        raise RuntimeError("Unexpected line: {}".format(line))

    var, val = match.groups()

    line = f.readline()
    if line != "export {};\n".format(var):
        raise RuntimeError("Variable not immediately exported: {}".format(line))

    if var == 'PATH':
        val = " ".join('"{}"'.format(elem) for elem in val.split(':'))
        print("set -gx fish_user_paths {}".format(val))
        continue

    print("set -gx {} \"{}\"".format(var, val))