これは、Linux (BSD とは異なり) が単一の引数のみを shebang コマンド (この場合は env) に渡すためのようです。
これは、StackOverflow で広く議論されています。
@rampion コメントでこれを見つけました:
<ブロック引用>何が起こるかというと、カーネルは #! を探してファイルの最初の 2 文字を処理します。それらが見つかった場合、非スペース文字を探してすべてのスペース文字をスキップし、別のスクリプトではなく実際の実行可能ファイルである必要があるインタープリター パスを抽出しますが、Linux はそれを拡張して再帰的なスクリプト処理を許可します。次に、最初の非スペース文字にスキップし、そこから次の改行文字に移動し、それを単一の引数としてコマンドに渡します。引用符やその他のメタ文字の「シェル」処理はありません。それはすべて非常に単純で力ずくです。したがって、そこにオプションを追加することはできません。引数の空白が 1 つだけ含まれており、'perl -w' はカーネルがここで認識して渡すものです。
ソース:http://lists.gnu.org/archive/html/bug-sh-utils/2002-04/msg00020.html