PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : #!/usr/bin/irgendwas (Interpreter aufrufen)



Hans-Georg Normann
12-02-2004, 22:28
Gibt es eigentlich einen Möglichkeit, einen interpreter in Abhängigkeit von irgendwelchen Bedingungen zu starten?

if -f /usr/bin/python2.3; then
#!/usr/bin/python2.3
else
#!/usr/bin/python
fi

Der Hintergrund. Ich habe Python 2.2 und Python 2.3 istalliert. Einige Konfigurationsscripte von Fedora und yum verlangen zwingend nach Version 2.2. Oder Muß die Interpreterangabe gar in der ersten Zeile des Scripts stehen?

Hans

Christoph
13-02-2004, 08:44
#! muss in der ersten Zeile stehen.

Bei Perl Scripten habe ich aber schonmal einen Trick gesehen wie das ohne #! geht (Habe leider kein Beispiel parat).

Eine Idee wäre, dass das Script sich selber aufruft (gibt's in Python sowas wie exec?) mit einem Parameter, bei dem der Initialisierungscode übersprungen wird.

peschmae
13-02-2004, 10:58
Bei Bashburn fehlt aus ähnlichen Gründen der Shebang - irgendwie wird das dann anders gemacht.

Der Grund ist dort, dass auf xBSD-Systemen die Bash nicht Standard-Shell ist und deshalb jeweils (per Ports) nach /usr/local/bin/bash installiert wird. Da würde dann /usr/bin/bash nicht stimmen...

MfG Peschmä

fork
13-02-2004, 12:31
Mit einem HERE-Dokument? Bei perl scheint das zu funktionieren.

#!/bin/bash

if [ -f /usr/bin/perl ]
then PERL=/usr/bin/perl
fi

if [ -f /bin/perl ]
then PERL=/bin/perl
fi

$PERL <<ENDE_SCRIPT

# Das Programm

ENDE_SCRIPT