あなたのスクリプトがノードの開発者によって使用することを意図されている場合は、絶対にちょうど
#!/usr/bin/env node
だけでなく、ノードがnodejs
としてインストールしている人たちとの互換性のためにしようと気を使う必要があります。
理由:
- それはクールな子供たちがやっていることだし、あなたもそれをしないならば、あなたはクールじゃありません。 jshint、karma、bower、さらにはnpmのようなメジャーノードプロジェクトは、実行可能スクリプトのシバンとして単純に
#!/usr/bin/env node
を使用します。
- クールな子供たちがやっているので、Ubuntuのノードで働いている人は、
nodejs
へのシンボリックリンクとして/usr/bin/node
を設定しています。スタックオーバーフローでこれを行うには、highly-viewed instructionsがあります。パッケージもあり、このシンボリックリンクを作成することを目的としていました。 Nodeを使っている人はUbuntuでこの問題を解決する方法を知っていて、にはにする必要があります。
- この問題は、Ubuntu 14.04ではもう存在しないようです。私はNodeをパージして
apt-get install nodejs
を実行し、/etc/alternatives/node
へのシンボリックリンクとして/usr/bin/node
を作成しました。この問題に苦しんでいる人々は、私は、少数が縮小していると考えています。あなたはノード文盲の人々をターゲットにしている場合であっても
は、あなたはまだあなたはそれが必要と認める場合は、おそらくあなたのインストールマニュアルを手動でシンボリックリンクの作成またはパッケージのインストールのための可能な必要性を追加し、#!/usr/bin/env node
を使用することもできます。 nodejs
と誰かが、上記シェバングを使用してプログラムを実行しないnode
利用できるしようとすると、彼らが表示されますことに注意してください:
は/ usr/binに/ ENV:ノード:そのようなファイルやディレクトリは
ん
とGoogling thatは、最初の結果に修正を加え、最初のページに何度も修正を加えます。
あなたは本当に、必死ユーザーはnodejs
が利用可能ですが、node
ではない(またはnode
が実際にAmateur Packet Radio Node programです)システム上でソフトウェアを実行できることを確認する場合は、この「2行を使用することができますシェバングは」Unix & Linux Stack Exchangeから撮影:
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "[email protected]"
console.log('Hello world!');
しかし、あなたは本当にノードの世界では、他のほとんど誰もしないときにこれを実行する必要がありますか?
スクリプトを呼び出すためのラッパーシェルスクリプトを作成し、ノードの存続場所とその呼び出し先を調べることができます。 – Doon
Unixのサイトでこの答えにたくさんの提案 - http://unix.stackexchange.com/questions/65235/universal-node-js-shebang – sargant
私は '#!/ usr/binから変更したnodejsスクリプトを持っています/ node'を '#!/ usr/bin/nodejs'に変更して、Ubuntu 12.04から12.10にアップグレードしました。そして、両方をチェックするラッパーから呼び出されます。 '#!/ usr/bin/env'ハックの議論については、[この質問](http://unix.stackexchange.com/q/29608/10454)と[私の答え](http:// unix。 stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my/29620#29620)。 –