Shell script shebang for unknown path Shell script shebang for unknown path shell shell

Shell script shebang for unknown path


/usr/bin/env is specifically thought of for cross-platform solutions.

env executes utility after modifying the environment as specified onthe command line.  The option name=value specifies an environmentalvariable, name, with a value of value.  The option `-i' causes envto completely ignore the environment it inherits.If no utility is specified, env prints out the names and values ofthe variables in the environment, with one name=value pair per line.

so something in lines of:

#!/usr/bin/env node

Will be cross-platform and "the right way to go".


Contrary to what people may think there is not standard location for env so we can only grab some info regarding it's location:

  • /usr/bin/env - MacOS (10.12)
  • both /bin/env, /usr/bin/env - Fedora (25)

I am sure others will be able to extend the list.


Put a space after the shebang. If the program is in environment variable PATH, it should go.

#! perl

Of course, a special case for Perl would be

:eval 'exec perl -S $0 ${1+"$@"}'  if 0;

This works on unix and OSX, even when there is no /usr/bin/env as noted by @Jens