Anzeige:
Ergebnis 1 bis 4 von 4

Thema: #!/usr/bin/irgendwas (Interpreter aufrufen)

  1. #1
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    05.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Question #!/usr/bin/irgendwas (Interpreter aufrufen)

    Gibt es eigentlich einen Möglichkeit, einen interpreter in Abhängigkeit von irgendwelchen Bedingungen zu starten?
    Code:
    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
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.06.1999
    Beiträge
    677
    #! 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.

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Mit einem HERE-Dokument? Bei perl scheint das zu funktionieren.
    Code:
    #!/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
    Geändert von fork (13-02-2004 um 13:41 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •