env命令到底是做什么的?

时间:2014-09-25 19:41:40

标签: bash shell shellshock-bash-bug

我最近遇到了shellshock错误,这是bash shell中的一个错误。不知何故,它使用env命令创建包含函数的环境变量。

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

然后在生成新的bash shell时运行这些函数。我在许多地方读过,并得到了我刚写的相同的解释。但我仍然无法弄清楚上述命令的工作及其参数。 任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

env设置一个或多个环境变量,然后将剩余的参数作为命令运行。

与以下语法没有显着差异:

x='() { :;}; echo vulnerable' bash -c "echo this is a test"

env可以做的一件事(虽然上面的例子中没有使用该功能)是创造一个干净的环境;如果env的第一个选项是单个-(或-i),则在执行显式分配和运行命令之前清除环境。

相关问题