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