Si su script está diseñado para que lo utilicen desarrolladores de Node, debe usar
#!/usr/bin/env node
y no se moleste en probar la compatibilidad con personas que solo tienen Node instalado como nodejs
.
Razón fundamental:
- Es lo que hacen los niños geniales, y si no lo haces tú también, no eres genial. Grandes proyectos de nodos como jshint , el karma , glorieta , e incluso la NGP utilizan simplemente
#!/usr/bin/env node
como el tinglado por sus secuencias de comandos ejecutables.
- Debido a que los chicos geniales lo están haciendo, cualquiera que trabaje con Node en Ubuntu ha configurado
/usr/bin/node
un enlace simbólico a nodejs
. Hay instrucciones muy consultadas sobre cómo hacer esto aquí en Stack Overflow y en toda la web. Incluso estaba el nodejs-legacy
paquete cuyo único propósito era crear este enlace simbólico para usted. Las personas que usan Node saben cómo solucionar este problema en Ubuntu, y deben hacerlo si quieren usar prácticamente cualquier software escrito en Node.
- El problema ni siquiera parece existir más en Ubuntu 14.04; Acabo de purgar Node y ejecuté un
apt-get install nodejs
y se creó /usr/bin/node
como un enlace simbólico a /etc/alternatives/node
. Sospecho que las personas afectadas por este problema son una minoría cada vez menor.
Incluso si está apuntando a personas analfabetas de Node, es posible que aún desee usar #!/usr/bin/env node
, quizás agregando la posible necesidad de creación manual de enlaces simbólicos o instalación del nodejs-legacy
paquete a su documentación de instalación si lo considera necesario. Tenga en cuenta que si alguien con nodejs
pero no node
disponible intenta ejecutar su programa con el shebang anterior, verá:
/ usr / bin / env: node: No existe tal archivo o directorio
y buscar en Google que les dará la solución en el primer resultado y muchas veces en la primera página.
Si realmente y desesperadamente desea asegurarse de que el usuario pueda ejecutar su software en un sistema donde nodejs
está disponible pero node
no lo está (o dónde node
está realmente el programa Nodo de radio de paquetes amateur ), entonces puede usar este "shebang de dos líneas" tomado de Unix y Linux Stack Exchange :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
pero, ¿realmente necesitas hacer esto cuando casi nadie más en el mundo Node lo hace?