警告 - 这个问题是关于shellshock漏洞之前的 Bash ,因此它被改变了。
我在我的 bash ENV 中看到过这样的事情:
module=() { eval `/usr/bin/modulecmd bash $*` }
Run Code Online (Sandbox Code Playgroud)
这个构造是如何工作的?这叫什么?
我不是在问 modulecmd,我是在问整个结构。
它实际上是一个名为module
. 导出函数时,它会出现在环境变量中。
$ test() { echo test; }
$ export -f test
$ env | sed -n '/test/{N;p}'
test=() { echo test
}
Run Code Online (Sandbox Code Playgroud)
出口
Run Code Online (Sandbox Code Playgroud)export [-fn] [-p] [name[=value]]
标记要传递给环境中的子进程的每个名称。如果提供了 -f 选项,则名称指的是 shell 函数;否则名称是指 shell 变量。-n 选项意味着不再为导出标记每个名称。如果未提供名称,或者提供了 -p 选项,则会显示导出的名称列表。-p 选项以可重复用作输入的形式显示输出。如果变量名后跟=value,则变量的值设置为value。
返回状态为零,除非提供了无效选项,名称之一不是有效的 shell 变量名称,或者 -f 提供的名称不是 shell 函数。