0

スペースを含む環境変数を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 の起動コードが行うことであるため、このパズルの解決策を見つけなければならないことに行き詰っています。

よろしくお願いします。

4

2 に答える 2