Wenn Ihr Skript für die Verwendung durch Node-Entwickler vorgesehen ist, sollten Sie es unbedingt nur verwenden
#!/usr/bin/env node
und nicht versuchen, Kompatibilität mit Leuten zu versuchen, die nur Node als installiert haben nodejs
.
Begründung:
- Es ist das, was die coolen Kids machen, und wenn du es nicht auch machst, bist du nicht cool. Große Knotenprojekte wie jshint , karma , bower und sogar npm werden einfach
#!/usr/bin/env node
als Shebang für ihre ausführbaren Skripte verwendet.
- Weil die coolen Kids es tun, hat jeder, der mit Node unter Ubuntu arbeitet, einen
/usr/bin/node
als Symlink zu eingerichtet nodejs
. Hier auf Stack Overflow und im gesamten Web finden Sie häufig angezeigte Anweisungen dazu . Es gab sogar das nodejs-legacy
Paket, dessen gesamter Zweck darin bestand, diesen Symlink für Sie zu erstellen. Leute, die Node verwenden, wissen, wie man dieses Problem unter Ubuntu behebt, und sie müssen, wenn sie so ziemlich jede Software verwenden wollen, die jemals in Node geschrieben wurde.
- Das Problem scheint unter Ubuntu 14.04 nicht mehr zu existieren. Ich habe gerade Node gelöscht und ein ausgeführt
apt-get install nodejs
und es wurde /usr/bin/node
als Symlink zu erstellt /etc/alternatives/node
. Ich vermute, die von diesem Problem betroffenen Menschen sind eine schrumpfende Minderheit.
Selbst wenn Sie sich an Node-Analphabeten wenden, möchten Sie diese möglicherweise weiterhin verwenden #!/usr/bin/env node
und möglicherweise die Notwendigkeit einer manuellen Symlink-Erstellung oder Installation des nodejs-legacy
Pakets zu Ihrer Installationsdokumentation hinzufügen, wenn Sie dies für erforderlich halten. Beachten Sie, dass jemand mit nodejs
, der nicht node
verfügbar ist und versucht, Ihr Programm mit dem oben genannten Shebang auszuführen, Folgendes sieht:
/ usr / bin / env: node: Keine solche Datei oder kein solches Verzeichnis
und Googeln, das ihnen die Korrektur im ersten Ergebnis und viele Male auf der ersten Seite gibt.
Wenn Sie wirklich unbedingt sicherstellen möchten, dass der Benutzer Ihre Software auf einem System ausführen kann, auf dem nodejs
verfügbar ist, das jedoch node
nicht verfügbar ist (oder auf dem node
sich tatsächlich das Amateur Packet Radio Node-Programm befindet ), können Sie diesen "zweizeiligen Shebang" verwenden von Unix & Linux Stack Exchange :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
Aber müssen Sie das wirklich tun, wenn es fast niemand in der Knotenwelt gibt?