スペースを含む環境変数を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 変数を 2 つの他の変数に分割しました。スペースが原因です。env がコマンドを消化した後、スペースを維持するためにあらゆる種類のオプションを試しましたが、これまでのところ運がありません。
これを自分で試すことができます
env -i FOO=123\ 456
FOO=123 456
すべては順調です
execve("/usr/bin/env", ["env", "-i", "FOO=123 456"],
コマンドを別の環境変数に配置すると、問題が発生します
これは Apache の起動コードが行うことであるため、このパズルの解決策を見つけなければならないことに行き詰っています。
よろしくお願いします。