実行したいプログラムのパスを知らずにシバン行を指定することはできますか?不明なパスのシェルスクリプトshebang
は多分
#!node
またはクロスプラットフォーム・ソリューションのための
#!/usr/local/bin/node
#!/usr/bin/node
エクストラポイント(各種Linux、BSD、OSXなど...)
いくつかのオプションを指定するパスを指定しません実行したいプログラムのパスを知らずにシバン行を指定することはできますか?不明なパスのシェルスクリプトshebang
は多分
#!node
またはクロスプラットフォーム・ソリューションのための
#!/usr/local/bin/node
#!/usr/bin/node
エクストラポイント(各種Linux、BSD、OSXなど...)
いくつかのオプションを指定するパスを指定しませんは、クロスプラットフォームソリューションと具体的に考えられています。
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
は、クロスプラットフォームと「行くための正しい方法」になります。
シバンの後ろにスペースを入れてください。プログラムが環境変数PATHにある場合、それは行かなければなりません。もちろん
#! perl
、Perl用の特殊なケースが
:
eval 'exec perl -S $0 ${1+"[email protected]"}'
if 0;
だろうこれは@Jens
で述べたように何の/ usr/binに/ ENVが存在しない場合でも、UNIX と OSX上で動作しますOSXで私のために働いていない - しかし、ありがとう –
人々がenv
するための標準的な場所は、私たちが唯一のそれは場所ですに関するいくつかの情報をつかむことができないと思いかもしれないものに反して:
/usr/bin/env
- (Fedoraの - MacOSの(10.12)/bin/env
、/usr/bin/env
25)他の人がリストを拡張できると確信しています。
+1実際に得られるクロスプラットフォームとして。悲しいことに、POSIXは 'env'がどこにあるかを指定していませんが、'/usr/bin'にはないシステムをまだ見つけていません。誰でもファンキーなOSを見たことがありますか? – Jens
シバンラインで複数のプログラムをパイプでつなぐことは可能ですか? ( '!#/ usr/bin/env cat | nl') –
いいえ、不可能です。必要な場合は別のスクリプトを使用してください。 – Jens