如果不知道要执行的程序的路径,是否有可能指定一个shebang行?
可能不需要指定路径。
#!node
或指定多个选项
#!/usr/local/bin/node
#!/usr/bin/node
如果能提供跨平台解决方案(支持多种Linux、BSD、OSX等操作系统),将会得到额外的加分。
/usr/bin/env
是专门用于跨平台解决方案的。
env executes utility after modifying the environment as specified on
the command line. The option name=value specifies an environmental
variable, name, with a value of value. The option `-i' causes env
to completely ignore the environment it inherits.
If no utility is specified, env prints out the names and values of
the variables in the environment, with one name=value pair per line.
做类似以下的事情:
#!/usr/bin/env node
将会跨平台且是“正确的选择”。
与人们可能认为的相反,env
没有标准位置,因此我们只能获取有关其位置的一些信息:
/usr/bin/env
- MacOS(10.12)/bin/env
,/usr/bin/env
- Fedora(25)我相信其他人也能扩展这个列表。
#! perl
:
eval 'exec perl -S $0 ${1+"$@"}'
if 0;
这适用于Unix 和 OSX,即使像@Jens所指出的那样,没有 /usr/bin/env。
-bash: ./foo: bash: bad interpreter: No such file or directory
- dualednode <<eof
your node program here
eof
env
在哪里,但我还没有找到一个系统它不在/usr/bin
中的情况。有人见过一个奇怪的操作系统没有吗? - Jens!#/usr/bin/env cat | nl
) - Billy Moon/bin/env
存在... - Jensenv
s”体验:我使用的超级计算机是/bin/env
,这使得为我的本地计算机和超级计算机开发变得非常烦人。 - Carl