On Dec 16, 2012, at 11:06 PM, Craig Treleaven <[email protected]> wrote:

> I was just curious why a lot of the Python scripts I've run across use the 
> env trick.  Sounds like it was a workaround as the path to the python 
> executable was unpredictable on some systems.

A couple of possibilities come to mind.


(A) The way execve(2) tokenizes shebang lines is not standardized.[1] Given a 
file "foo.pl" starting with "#!/usr/bin/env perl -w", OS X and other BSDs 
execute /usr/bin/env with the args "perl", "-w", and "foo.pl", while Linux 
passes "perl -w" and "foo.pl".[2][3] Obviously, "perl -w" is not the name of an 
interpreter. If Perl scripts commonly include options in the shebang line, 
using /usr/bin/env could cause portability issues.

    [1] http://mail-index.netbsd.org/netbsd-users/2008/11/09/msg002388.html
    [2] 
https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/execve.2.html
    [3] http://man7.org/linux/man-pages/man2/execve.2.html


(B) It's fairly common to isolate Python programs and apps inside sandboxes 
like virtualenv, which install an interpreter and its associated libraries and 
modules inside a directory of your choosing. I don't know how common this sort 
of thing is in the Perl world.


(C) Could just be a chance cultural difference, for no good reason.


vq
_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to