Sembra che ciò sia dovuto al fatto che Linux (a differenza di BSD) passa solo un singolo argomento al comando shebang (in questo caso env).
Questo è stato ampiamente discusso su StackOverflow.
Ho trovato questo tramite il commento di @rampion:
Quello che succede è che il kernel processa i primi due caratteri del file cercando #!. Se vengono trovati, salta tutti i caratteri spaziali cercando un carattere non spaziale ed estrae il percorso dell'interprete che deve essere un vero eseguibile e non un altro script, sebbene Linux lo estenda per consentire l'elaborazione ricorsiva degli script. Dopo averlo scoperto, salta al primo carattere non spazio dove prende da lì il successivo carattere di nuova riga e lo passa come singolo argomento al comando. Non esiste un'elaborazione "shell" di virgolette o altri meta caratteri. È tutto molto semplice e forza bruta. Quindi non puoi essere fantasioso con le opzioni lì. Ottieni esattamente uno spazio bianco di argomento incluso e 'perl -w' è ciò che il kernel vede qui e trasmette.
Fonte:http://lists.gnu.org/archive/html/bug-sh-utils/2002-04/msg00020.html