我最近遇到了shellshock错误,这是bash shell中的一个错误。不知何故,它使用env
命令创建包含函数的环境变量。
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
然后在生成新的bash shell时运行这些函数。我在许多地方读过,并得到了我刚写的相同的解释。但我仍然无法弄清楚上述命令的工作及其参数。 任何人都可以解释一下吗?
答案 0 :(得分:1)
env
设置一个或多个环境变量,然后将剩余的参数作为命令运行。
与以下语法没有显着差异:
x='() { :;}; echo vulnerable' bash -c "echo this is a test"
env
可以做的一件事(虽然上面的例子中没有使用该功能)是创造一个干净的环境;如果env
的第一个选项是单个-
(或-i
),则在执行显式分配和运行命令之前清除环境。