是否可以在不知道要执行的程序路径的情况下指定shebang行?
可能没有指定路径
#!node
或指定多个选项
#!/usr/local/bin/node
#!/usr/bin/node
跨平台解决方案的额外点(各种风格的linux,BSD,OSX等......)
答案 0 :(得分:16)
/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
将是跨平台和“正确的方式”。
答案 1 :(得分:0)
与人们可能认为env
没有标准位置的情况相反,所以我们只能获取有关它位置的一些信息:
/usr/bin/env
- MacOS(10.12)/bin/env
,/usr/bin/env
- Fedora(25)我相信其他人可以扩展名单。
答案 2 :(得分:-2)
在shebang之后放一个空格。如果程序在环境变量PATH中,它应该去。
#! perl
当然,Perl的一个特例是
:
eval 'exec perl -S $0 ${1+"$@"}'
if 0;
这适用于unix 和 OSX,即使没有@Jens所指出的/ usr / bin / env
答案 3 :(得分:-3)
不要使用shebang。
node <<eof
your node program here
eof