2009-04-01 19 views

risposta

24

In UNIX e Linux questo indica quale binario da usare come interprete (vedi anche Wiki page). Ad esempio, lo script della shell è interpretato da /bin/sh.

#!/bin/sh 

Ora con pitone E 'un po' complicato, perché non si può assumere in cui è installato il file binario, né quali si desidera utilizzare. Quindi il trucco /usr/bin/env. È utilizzabile qualsiasi python binario sia il primo nel $PATH. È possibile verificare che l'esecuzione di which python

Con la riga dell'interprete è possibile eseguire lo script da chmoding a eseguibile. E semplicemente eseguendolo. Così, con lo script che inizia con

#!/usr/bin/env python 

questi due metodi sono equivalenti:

$ python script.py 

e (supponendo che in precedenza hai fatto chmod +x script.py)

$ ./script.py 

Questo è utile per creare script a livello di sistema.

cp yourCmd.py /usr/local/bin/yourCmd 
chmod a+rx /usr/local/bin/yourCmd 

E poi tu lo chiami da qualsiasi luogo solo con

yourCmd 
5

Sotto UNIX e sistemi operativi simili, questa riga indica quale interprete deve essere utilizzato se il file viene eseguito.

+0

-1: dimenticato il materiale di riferimento: http://en.wikipedia.org/wiki/Shebang_(Unix) –

+0

da non confondere con http://en.wikipedia.org/wiki/She_Bangs –

+0

Pete .. . mi hai migliorato la giornata. –

14

Questo si chiama una linea shebang: "#"

In informatica, uno shebang (chiamato anche hashbang, hashpling, o libbre botto) si riferisce ai personaggi quando sono i primi due caratteri in un file di testo. I sistemi operativi di tipo Unix prendono la presenza di questi due caratteri come un'indicazione che il file è uno script e cercano di eseguire quello script usando l'interprete specificato dal resto della prima riga nel file. Ad esempio, gli script di shell per la shell Bourne iniziano con la prima riga:

+0

Ad esempio, gli script di shell per la shell Bourne iniziano con la prima riga: link offensivo? – Dan

+0

... '#!/Bin/bash'. –

3

'/ usr/bin/env python' cerca $ PATH per python e lo esegue.

solito ENV viene utilizzato per impostare alcune variabili d'ambiente per un programma

cosa che la linea non fa altro che dire al computer cosa fare con quel file, se semplicemente tenta di eseguire il file senza specificare un interprete .. more detail

5

Come ha detto Andri.In Windows, il file eseguibile per eseguire un file con volta lanciato dalla riga di comando si basa su un'associazione:

16:12:40.68 C:\>assoc .py 
.py=Python.File 

16:13:53.45 C:\>assoc Python.File 
Python.File=Python File 

16:14:01.70 C:\>ftype Python.File 
Python.File="C:\Python30\python.exe" "%1" %* 

In Unix, l'interprete di shell rende l'inferenza aprendo il file e vedere se v'è un comando chiamato in il file.

+0

Sempre utile per quei giorni che lavoro su un contenitore di windoze. –

2

Solo una nota, questa riga non è altro che un commento all'interprete in Windows.

+3

non è altro che un commento all'interprete in unix – hop