我在bash shell上运行了一些遗留代码,我无法理解/通过这一行:
BASH_FUNC_module()='() { eval `/usr/bin/modulecmd bash $*`
}'; export BASH_FUNC_module()
我得到的错误是:
line 364: syntax error near unexpected token `='() { eval `/usr/bin/modulecmd bash $*`
}''
line 364: `}'; export BASH_FUNC_module()'
任何指针都会受到赞赏,我是shell的新手:)谢谢!
答案 0 :(得分:2)
看起来你正在尝试转换bash的一些跟踪/转储输出。你很可能想要:
module() { eval `/usr/bin/modulecmd bash $*`; }
export -f module
应该适用于旧版本/新版本的bash。
答案 1 :(得分:0)
您错误地组合了赋值和函数定义的语法。
BASH_FUNC_module='() { eval `/usr/bin/modulecmd bash $*`; }'
export BASH_FUNC_module
答案 2 :(得分:0)
Mike Frysinger正确描述了问题原因。但是,解决问题通常需要以下几个步骤之一:
unset -f module
更一般地说,要取消设置所有导出的功能,您可以使用以下内容:
unset -f $(env | awk '/^BASH_FUNC_/{sub("[(].*","");print substr($0,11)}')
当然:
unset -f
命令还具有从当前shell中删除函数的效果。