VARIABLE=() { 函数定义 } 在 bash 中如何工作

VARIABLE=() { 函数定义 } 在 bash 中如何工作

警告 - 这个问题是关于之前的 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
}

bash 文档 - 导出:

出口

 export [-fn] [-p] [name[=value]]

标记要传递给环境中子进程的每个名称。如果提供 -f 选项,则名称引用 shell 函数;否则,名称引用 shell 变量。 -n 选项意味着不再标记每个名称以供导出。如果未提供名称,或者给出了 -p 选项,则会显示导出名称的列表。 -p 选项以可重复用作输入的形式显示输出。如果变量名后跟=value,则变量的值设置为value。

返回状态为零,除非提供了无效的选项、名称之一不是有效的 shell 变量名称,或者 -f 提供的名称不是 shell 函数。

相关内容