2011-01-25 12 views
28

Mi piace il javascript, quindi ero entusiasta quando ho sentito parlare di Node.js, un runtime Javascript basato su V8. Preferirei fare il mio script di shell andando avanti in Javascript. Il mio problema è questo: come posso eseguire i miei script senza chiamare node ~/Scripts/myscript.js? Dopo il mio script chmod +x, si tenta di eseguire come script bash invece di un javascript Node.js.È possibile eseguire gli script Node.js senza richiamare `node`?

+0

imho questo appartiene a stackoverflow.com – akira

+1

@akira L'ho postato qui perché riguarda l'uso degli strumenti piuttosto che gli argomenti di programmazione. Le mie domande riguardano il modo in cui un sistema operativo gestisce i file di script, non la modalità di programmazione di detti script. –

+0

In realtà è abbastanza semplice farlo in Geany: http://stackoverflow.com/questions/12464679/run-a-node-js-server-from-geany/12465826#12465826 –

risposta

34

Che cosa sta facendo iniziare la shell corrente bash è che la shell corrente (bash?) Non ha idea di cosa fare con un file.js. Ecco perché gli dei di Unix inventato la shebang per:

La sequenza di caratteri costituito dal segno caratteri numero e punto esclamativo (! #), Quando si verifica, come i primi due caratteri nella prima riga di un file di testo. In questo caso, il programma di caricamento in sistemi operativi Unix analizza il resto della prima riga come una direttiva interprete e richiama il programma specificato dopo la sequenza di caratteri con qualsiasi opzione della riga di comando specificata come parametri.

Quindi, nel tuo caso vorrei cercare di mettere

#!/usr/bin/env node 

nella parte superiore dello script. Puoi vedere che è applicato, ad esempio, nella shell "inode" (interactive node.js), che potrebbe essere un'altra opzione per sparare i tuoi script.

https://github.com/bancek/node-interactive-shell/blob/master/inode.js

+24

In realtà dovrebbe usare '#!/Usr/bin/env node'. PS: Avere Nodo installato come root è ... una cattiva idea, installarlo sempre in ~ ~/.local', si dovrebbe anche installare npm lì. Altrimenti si deve sudo npm per l'installazione di roba, e i pacchetti di nodi possono avere script post-installazione;) –

+0

@Ivo Wetzel come farei per spostare l'installazione di Node.js in ~/.local? Devo solo disinstallare e reinstallare? Io costruisco dal sorgente usando 'make' –

+0

Disinstallare quello corrente e quindi fare riferimento a questo gist: https://gist.github.com/579814#file_xgd_freedesktop.org_style.sh –

0

È sempre possibile semplicemente creare uno script di shell che viene eseguito il nodo per voi.

In alternativa, se si desidera creare uno script che può essere eseguito in un ambiente in cui non è installato node.js, è possibile utilizzare installer-maker.

Problemi correlati