23

実行したいプログラムのパスがわからなくても、シバンラインを指定することはできますか?

たぶんパスを指定しないでください

#!node

またはいくつかのオプションを指定します

#!/usr/local/bin/node
#!/usr/bin/node

クロスプラットフォームソリューションの追加ポイント(Linux、BSD、OSXなどのさまざまなフレーバー...)

4

4 に答える 4

25

/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

クロスプラットフォームであり、「正しい方法」です。

于 2012-08-09T18:50:51.710 に答える
-2

シバンの後にスペースを入れます。プログラムが環境変数 PATH にある場合は、移動する必要があります。

#! perl

もちろん、Perl の特殊なケースは次のようになります。

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

これは、@Jens が指摘したように /usr/bin/env がない場合でも、UNIXおよびOSX で機能します。

于 2012-08-09T18:43:09.137 に答える
-4

シバンを使用しないでください。

node <<eof
your node program here
eof
于 2012-08-09T18:49:39.803 に答える