[Python-de] 2 kleine Fragen

Det ddet at gmx.de
Tue Mar 12 21:20:04 EST 2002


On Mon, Mar 11, 2002 at 09:41:51PM +0100, Gerson Kurz wrote:
> > und was bedeutet dieses: #!/usr/bin/env python

Das ist die sog. "Shebang"-Zeile (Slang fuer das Sharp-Sign und
das Bang-Sign (Ausrufezeichen als Comicsymbol fuer einen Knall).
[...]

> 
> Die *nix Shell hingegen liest für ausführbare Dateien (haben ein
> Permission-Bit ähnlich wie "Readonly" unter Windows). Wenn die erste Zeile
> mit #! anfängt, dann gibt sie das Programm an, mit dem die Datei ausgeführt
> werden soll. Also würde
> 
> #!/usr/bin/python
> 
> bedeuten, daß die Datei mit dem Befehl /usr/bin/python ausgeführt wird
> (egal, ob die Datei die endung .py oder .exe oder .sonstwas hat). 

Und das klappert auch unter Linux.

> Das
> 
> #!/usr/bin/env python
> 
> Sucht den Befehl "python" auf dem Pfad und führt in dann aus. (Tatsächlich
> kann "env" noch mehr, aber das ist was hier damit bezweckt wird).

Jain. Es gibt Unices die eine Ausfuehrung der Datei mit dem 
Shebang-Pfad verhindern, wenn dieser nicht auf eine Binaerdatei zeigt.

Wenn /usr/bin/python nun bspw. ein Script ist, in welchem z.B.
Environmentvariablen gesetzt und dann der eigentliche Interpreter
gestartet wird, klappert gar nischt.
(Waere z.B. auch der Fall, wenn man jython benutzt und nur einen
Link namens python darauf setzt. Jython ist selber ein Script,
dass den Interpreter in der Java-Maschine startet).

Das /usr/bin/env mit python als Parameter umgeht das, da ja
env nun einmal ein Binaerprog ist.

Bye
Det



More information about the Python-de mailing list