What does "#!/bin/env" mean (at the top of a node.js script)?

I found serval node.js projects that have this at top of their app.js (as in this openshift program):

#!/bin/env node

What does this mean? How does this work? Where is it useful?


Solution 1:

The full line from your example is:

#!/bin/env node

This simply means that the script should be executed with the first executable named 'node' that's found in your current PATH.

The shebang (#!) at the start means execute the script with what follows. /bin/env is a standard unix program that looks at your current environment. Any argument to it not in a 'name=value' format is a command to execute. See your env manpage for further details.

Solution 2:

env is a shell command used to specify an interpreter.