如果你的腳本是供節點開發人員使用的,你絕對應該只使用
#!/usr/bin/env node
又懶得與誰只具有節點安裝爲nodejs
人試圖兼容性。
理由:
- 這就是時尚的年輕人都在做的,如果你沒有做到這一點,你是不冷靜。主要節點項目如jshint,karma,bower,甚至npm僅使用
#!/usr/bin/env node
作爲其可執行腳本的shebang。
- 因爲酷酷的孩子們正在這樣做,所以任何在Ubuntu上使用Node的人都會將
/usr/bin/node
設置爲nodejs
的符號鏈接。這裏有堆棧溢出和遍佈網絡的highly-viewed instructions。甚至還有包,其全部用途是爲你創建這個符號鏈接。使用Node的人知道如何解決Ubuntu上的這個問題,他們必須要,如果他們想要使用幾乎任何在Node中編寫的軟件。
- 這個問題在Ubuntu 14.04上似乎不再存在;我剛清除了節點並運行了一個
apt-get install nodejs
,它創建了/usr/bin/node
作爲符號鏈接到/etc/alternatives/node
。受這個問題困擾的人,我懷疑是少數人的縮小。
即使你的目標節點不識字的人,你可能仍然要使用#!/usr/bin/env node
,或許增加了對創建符號鏈接或安裝包的可能需要您的安裝文件,如果你認爲有必要。需要注意的是,如果有人用nodejs
但不node
可嘗試與上述家當運行您的程序,他們會看到:
在/ usr/bin中/ ENV:節點:沒有這樣的文件或目錄
和Googling that將爲他們提供第一個結果中的修復和第一個頁面中的多次修復。
如果你真的,拼命想確保用戶可以在系統中nodejs
可用,但node
不是(或者node
實際上是Amateur Packet Radio Node program),那麼你可以使用這個「兩行上運行軟件認領」從Unix & Linux Stack Exchange採取:
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "[email protected]"
console.log('Hello world!');
但你真的需要做到這一點的時候,幾乎沒有人在世界上的節點是?
你可以製作一個封裝外殼腳本來調用你的腳本,它試圖找出節點在哪裏以及它叫什麼。 – Doon
在Unix網站上的這個答案很多建議 - http://unix.stackexchange.com/questions/65235/universal-node-js-shebang – sargant
我有一個nodejs腳本,我從'#!/ usr/bin /節點'到'#!/ usr/bin/nodejs'時,我從Ubuntu 12.04升級到12.10。它是從一個包裝檢查這兩個。關於'#!/ usr/bin/env'的討論,請參閱[這個問題](http://unix.stackexchange.com/q/29608/10454)和[我的回答](http:// unix。 stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my/29620#29620)。 –