意外标记 `='() 附近的语法错误
Syntax error near unexpected token `='()
我 运行 在 bash shell 上有一些遗留代码,我在 understanding/passing 通过这条线遇到了麻烦:
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 的新手 :) 谢谢!
您似乎在尝试转换 bash 的某些 trace/dump 输出。您很可能想要:
module() { eval `/usr/bin/modulecmd bash $*`; }
export -f module
应该适用于 old/new 版本的 bash。
您错误地结合了赋值语法和函数定义语法。
BASH_FUNC_module='() { eval `/usr/bin/modulecmd bash $*`; }'
export BASH_FUNC_module
Mike Frysinger 正确描述了问题原因。但是,解决问题通常需要以下几个步骤之一:
- 卸载有问题的包,通常名为 environment-modules,
- 修改遗留代码以跳过以w/开头的环境变量BASH_FUNC_",
- 在 运行 遗留代码之前将其从您的环境中删除:
unset -f module
更一般地说,要取消设置所有导出的函数,您可以使用以下命令:
unset -f $(env | awk '/^BASH_FUNC_/{sub("[(].*","");print substr([=11=],11)}')
当然:
- 卸载软件包不会改变当前的 shell。
unset -f
命令还具有从当前 shell. 中删除函数的效果
我 运行 在 bash shell 上有一些遗留代码,我在 understanding/passing 通过这条线遇到了麻烦:
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 的新手 :) 谢谢!
您似乎在尝试转换 bash 的某些 trace/dump 输出。您很可能想要:
module() { eval `/usr/bin/modulecmd bash $*`; }
export -f module
应该适用于 old/new 版本的 bash。
您错误地结合了赋值语法和函数定义语法。
BASH_FUNC_module='() { eval `/usr/bin/modulecmd bash $*`; }'
export BASH_FUNC_module
Mike Frysinger 正确描述了问题原因。但是,解决问题通常需要以下几个步骤之一:
- 卸载有问题的包,通常名为 environment-modules,
- 修改遗留代码以跳过以w/开头的环境变量BASH_FUNC_",
- 在 运行 遗留代码之前将其从您的环境中删除:
unset -f module
更一般地说,要取消设置所有导出的函数,您可以使用以下命令:
unset -f $(env | awk '/^BASH_FUNC_/{sub("[(].*","");print substr([=11=],11)}')
当然:
- 卸载软件包不会改变当前的 shell。
unset -f
命令还具有从当前 shell. 中删除函数的效果