หากสคริปต์ของคุณมีไว้สำหรับนักพัฒนาโหนดคุณควรใช้
#!/usr/bin/env node
และไม่ต้องกังวลกับการพยายามเข้ากันได้กับผู้ที่ติดตั้งโหนดเป็นnodejs
ไฟล์.
เหตุผล:
- มันคือสิ่งที่เด็ก ๆ กำลังทำอยู่และถ้าคุณไม่ทำเช่นนั้นคุณก็ไม่เจ๋ง โครงการโหนดที่สำคัญเช่นjshint , กรรม , bowerและแม้แต่npmก็ใช้
#!/usr/bin/env node
เป็น shebang สำหรับสคริปต์ปฏิบัติการของพวกเขา
- เนื่องจากเด็กเย็นกำลังทำมันทุกคนที่ทำงานร่วมกับโหนดบน Ubuntu ได้มีการจัดตั้ง
/usr/bin/node
เป็น symlink nodejs
ไป มีคำแนะนำเกี่ยวกับการดำเนินการนี้บน Stack Overflow และทั่วทั้งเว็บ มีแม้แต่nodejs-legacy
แพ็คเกจที่มีจุดประสงค์เพื่อสร้าง symlink นี้ให้กับคุณ ผู้ที่ใช้ Node รู้วิธีแก้ไขปัญหานี้บน Ubuntu และต้องทำหากต้องการใช้ซอฟต์แวร์ใด ๆ ที่เคยเขียนใน Node
- ปัญหาดูเหมือนจะไม่มีอีกแล้วบน Ubuntu 14.04 ฉันเพียงแค่ล้าง Node และวิ่ง
apt-get install nodejs
และมันสร้าง/usr/bin/node
เป็น symlink /etc/alternatives/node
ไป ฉันสงสัยว่าคนที่ได้รับผลกระทบจากปัญหานี้คือคนกลุ่มน้อยที่หดตัวลง
แม้ว่าคุณจะกำหนดเป้าหมายผู้ที่ไม่รู้หนังสือ แต่คุณอาจยังต้องการใช้งานอยู่#!/usr/bin/env node
บางทีอาจเพิ่มความต้องการที่เป็นไปได้สำหรับการสร้าง symlink ด้วยตนเองหรือการติดตั้งnodejs-legacy
แพคเกจลงในเอกสารการติดตั้งของคุณหากคุณเห็นว่าจำเป็น โปรดทราบว่าหากมีคนที่มีnodejs
แต่ไม่มีnode
อยู่พยายามเรียกใช้โปรแกรมของคุณด้วย Shebang ข้างต้นพวกเขาจะเห็น
/ usr / bin / env: node: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
และGoogling ที่จะช่วยแก้ไขในผลลัพธ์แรกและหลาย ๆ ครั้งในหน้าแรก
หากคุณต้องการให้แน่ใจว่าผู้ใช้สามารถเรียกใช้ซอฟต์แวร์ของคุณในระบบที่nodejs
พร้อมใช้งานได้ แต่node
ไม่สามารถใช้งานได้ (หรือnode
โปรแกรมAmateur Packet Radio Nodeอยู่ที่ไหน) คุณสามารถใช้ "shebang สองบรรทัด" นี้ได้ จากUnix & Linux Stack Exchange :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
แต่คุณจำเป็นต้องทำสิ่งนี้จริงๆหรือเมื่อแทบไม่มีใครอยู่ในโลกโหนด?