/usr/bin/env Marc Feeley (23 Mar 2001 15:24 UTC)
Re: /usr/bin/env David Rush (23 Mar 2001 15:36 UTC)
Re: /usr/bin/env Marc Feeley (23 Mar 2001 16:18 UTC)

Re: /usr/bin/env Marc Feeley 23 Mar 2001 16:18 UTC

> Marc Feeley <xxxxxx@IRO.UMontreal.CA> writes:
> >    #! /usr/bin/env script-interpreter
>
> > Anybody have experience, or comments about this?  Is /usr/bin/env
> > "standard" or POSIX?
>
> from the Solaris 2.6 man page:
>
>  /usr/bin/env
>      If env executes commands with arguments, it uses the default
>      shell /usr/bin/sh (see sh(1)).
>
> So arguably more graceful looking than the traditional shell
> trampoline, but effectively the same thing...

I just measured the run time for the following three script
structures:

script s1:
            #! /u/feeley/gambc40a5/gsi/gsi
            (exit)

script s2:
            #! /bin/sh
            "exec" "gsi" "$0" "$@"
            (exit)

script s3:
            #! /usr/bin/env gsi
            (exit)

using Gambit on a RH Linux 1 GHz Athlon system (results of "time"
below).  It seems that the /usr/bin/env approach is just as fast as
specifying the absolute path of the interpreter (about 0.01 second to
start and exit the interpreter compared to about 0.05 second when
using /bin/sh).  So perhaps the use of /bin/sh by /usr/bin/env is
specific to Solaris (or maybe just non Linux systems).

Marc

% time ./s1 # 5 times
0.000u 0.010s 0:00.01 100.0%    0+0k 0+0io 451pf+0w
0.000u 0.010s 0:00.01 100.0%    0+0k 0+0io 451pf+0w
0.010u 0.000s 0:00.01 100.0%    0+0k 0+0io 451pf+0w
0.000u 0.010s 0:00.01 100.0%    0+0k 0+0io 451pf+0w
0.010u 0.000s 0:00.01 100.0%    0+0k 0+0io 451pf+0w
% time ./s2 # 5 times
0.000u 0.030s 0:00.07 42.8%     0+0k 0+0io 659pf+0w
0.000u 0.010s 0:00.05 20.0%     0+0k 0+0io 659pf+0w
0.020u 0.000s 0:00.05 40.0%     0+0k 0+0io 659pf+0w
0.000u 0.020s 0:00.05 40.0%     0+0k 0+0io 659pf+0w
0.010u 0.010s 0:00.05 40.0%     0+0k 0+0io 659pf+0w
% time ./s3 # 5 times
0.000u 0.020s 0:00.01 200.0%    0+0k 0+0io 556pf+0w
0.000u 0.010s 0:00.01 100.0%    0+0k 0+0io 556pf+0w
0.010u 0.000s 0:00.01 100.0%    0+0k 0+0io 556pf+0w
0.010u 0.000s 0:00.01 100.0%    0+0k 0+0io 556pf+0w
0.000u 0.010s 0:00.01 100.0%    0+0k 0+0io 556pf+0w