Якщо ваш сценарій призначений для використання розробниками Node, вам слід абсолютно просто використовувати
#!/usr/bin/env node
і не турбуватися про спроби сумісності з людьми, у яких лише Node встановлений як nodejs
.
Обґрунтування:
- Це те, що роблять круті діти, і якщо ти теж цього не робиш, ти не крутий. Основні проекти вузлів, такі як jshint , karma , bower і навіть npm, просто використовуються
#!/usr/bin/env node
як shebang для своїх виконуваних сценаріїв.
- Оскільки це роблять круті діти, кожен, хто працює з Node в Ubuntu, встановив символ
/usr/bin/node
як посилання на nodejs
. Є дуже переглянуті вказівки щодо цього тут, у Stack Overflow та в усьому Інтернеті. Був навіть nodejs-legacy
пакет, ціллю якого було створення цього символічного посилання для вас. Люди, які використовують Node, знають, як вирішити цю проблему в Ubuntu, і вони повинні це зробити, якщо хочуть використовувати практично будь-яке програмне забезпечення, коли-небудь написане в Node.
- Здається, проблема навіть більше не існує в Ubuntu 14.04; Я просто очистив Node і запустив,
apt-get install nodejs
і він створив /usr/bin/node
як символічне посилання на /etc/alternatives/node
. Люди, які страждають від цього питання, - це, я підозрюю, зменшується.
Навіть якщо ви націлені на неграмотних людей, ви все одно можете скористатися цим #!/usr/bin/env node
, можливо, додавши можливу необхідність створення символічного посилання вручну або встановлення nodejs-legacy
пакету до вашої документації щодо встановлення, якщо ви вважаєте це необхідним. Зверніть увагу: якщо хтось із, nodejs
але node
недоступний, спробує запустити вашу програму за допомогою вищезазначеного шебанга, вони побачать:
/ usr / bin / env: node: Немає такого файлу або каталогу
і погугливши це дасть їм виправлення в першому результаті та багато разів на першій сторінці.
Якщо ви справді, відчайдушно хочете переконатись, що користувач може запустити ваше програмне забезпечення в системі, де nodejs
вона доступна, але node
її немає (або де node
насправді є програма Amateur Packet Radio Node ), тоді ви можете використовувати цей "дворядковий шебанг" від Unix та Linux Stack Exchange :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
але чи справді потрібно це робити, коли майже ніхто інший у світі Вузлів не є?