我想将一个带有空格的环境变量传递给apache。Apache 使用 env 来启动自己,所以实际上我必须做一些这样的事情
export MYCMD=" env -i FOO=123\ 456"
$MYCMD
结果是
env: 456: No such file or directory
查看 strace 输出,我看到了这个
execve("/usr/bin/env", ["env", "-i", "FOO=123\\", "456"], [/* 41 vars */]) = 0
如您所见,由于空间的原因,env 实用程序已将我的 FOO 变量拆分为另外两个变量。在 env 消化命令后,我尝试了各种选项来尝试维护空间,但到目前为止还没有运气。
你可以自己试试这个
env -i FOO=123\ 456
FOO=123 456
一切都很好
execve("/usr/bin/env", ["env", "-i", "FOO=123 456"],
将命令放入另一个环境变量时会出现问题
由于这就是 Apache 的启动代码,所以我不得不为这个难题找到解决方案。
提前谢谢了。