複数の環境で動作するnode.jsのスクリプトを作成しようとしています。特に私にとっては、OS XとUbuntuの間を行き来しています。前者では、Nodeはnode
としてインストールされますが、後者ではnodejs
です。
#!/usr/bin/env node
または
#!/usr/bin/env nodejs
どちらか一方がコマンド(./script-name.js
対node script-name.js
)を指定する必要があるのではなく、ノードがインストールされている限り、どちらの環境でもスクリプトを実行可能ファイルとして実行したいです。
Node.jsのバックアップhashbangまたはどちらの場合でも互換性のあるものを指定する方法はありますか?
スクリプトがNode開発者による使用を目的としている場合、絶対に使用する必要があります
#!/usr/bin/env node
Nodeのみをnodejs
としてインストールしているユーザーとの互換性を追求することはありません。
根拠:
#!/usr/bin/env node
を使用します実行可能スクリプトのシバン。nodejs
へのシンボリックリンクとして/usr/bin/node
を設定しています。ここでStack Overflowを使用してこれを行うと、Web全体で 高度に表示された指示 があります。このシンボリックリンクを作成することが全体の目的であるnodejs-legacy
パッケージもありました。 Nodeを使用する人は、Ubuntuでこの問題を修正する方法を知っています。ほとんどのソフトウェアを使用する場合は、to Nodeで書かれた。apt-get install nodejs
を実行し、/usr/bin/node
へのシンボリックリンクとして/etc/alternatives/node
を作成しました。この問題に苦しんでいる人々は、少数派になっていると思われます。Node-literatureのない人をターゲットにしている場合でも、#!/usr/bin/env node
を使用したい場合があります。おそらく、手動でsymlinkを作成したり、nodejs-legacy
パッケージのインストールの必要性をインストールドキュメントに追加したりします必要。 nodejs
を使用できるがnode
を使用できないユーザーが上記のShebangを使用してプログラムを実行しようとすると、次のように表示されることに注意してください。
/ usr/bin/env:node:そのようなファイルまたはディレクトリはありません
Googling that は、最初の結果で修正を行い、最初のページで何度も修正します。
本当に、必然的に、ユーザーがnodejs
は使用できるがnode
は使用できない(またはnode
が実際にあるシステムでソフトウェアを実行できることを確認したい場合- Amateur Packet Radio Node program )、 nix&Linux Stack Exchange から取得したこの「2行シバン」を使用できます。
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
しかし、Nodeの世界に誰もほとんどいないときに本当にこれを行う必要がありますか?