Jika skrip Anda ditujukan untuk digunakan oleh pengembang Node, Anda harus benar-benar menggunakan
#!/usr/bin/env node
dan tidak perlu repot-repot mencoba kompatibilitas dengan orang yang hanya menginstal Node sebagai nodejs.
Alasan:
- Itulah yang dilakukan anak-anak keren, dan jika Anda tidak melakukannya juga, Anda tidak keren. Proyek simpul besar seperti jshint , karma , pondok , dan bahkan NPM hanya menggunakan
#!/usr/bin/env nodesebagai shebang untuk script executable mereka.
- Karena anak-anak keren melakukannya, siapa pun yang bekerja dengan Node di Ubuntu telah menyiapkan
/usr/bin/nodesebagai symlink ke nodejs. Ada instruksi yang sangat dilihat untuk melakukan ini di sini di Stack Overflow, dan di seluruh web. Bahkan ada nodejs-legacypaket yang tujuan utamanya adalah membuat symlink ini untuk Anda. Orang yang menggunakan Node tahu cara memperbaiki masalah ini di Ubuntu, dan mereka harus melakukannya jika ingin menggunakan hampir semua perangkat lunak yang pernah ditulis di Node.
- Masalahnya bahkan tampaknya tidak ada lagi di Ubuntu 14.04; Saya baru saja membersihkan Node dan menjalankannya
apt-get install nodejsdan itu dibuat /usr/bin/nodesebagai symlink ke /etc/alternatives/node. Orang-orang yang terkena masalah ini, saya duga, adalah minoritas yang menyusut.
Meskipun Anda menargetkan orang-orang yang buta huruf Node, Anda mungkin masih ingin menggunakan #!/usr/bin/env node, mungkin menambahkan kemungkinan kebutuhan untuk pembuatan symlink manual atau instalasi nodejs-legacypaket ke dokumentasi instalasi Anda jika Anda menganggapnya perlu. Perhatikan bahwa jika seseorang dengan nodejstetapi tidak nodetersedia mencoba menjalankan program Anda dengan shebang di atas, mereka akan melihat:
/ usr / bin / env: node: File atau direktori tidak ada
dan Googling yang akan memberi mereka perbaikan di hasil pertama dan berkali-kali di halaman pertama.
Jika Anda benar-benar, sangat ingin memastikan bahwa pengguna dapat menjalankan perangkat lunak Anda pada sistem nodejsyang tersedia tetapi nodetidak tersedia (atau di mana nodesebenarnya ada program Node Radio Paket Amatir ), maka Anda dapat menggunakan "shebang dua baris" yang diambil dari Unix & Linux Stack Exchange :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
tetapi apakah Anda benar-benar perlu melakukan ini ketika hampir tidak ada orang lain di dunia Node?