Schrift
[thread]11731[/thread]

Shebang für Windows und Linux/Unix



<< >> 6 Einträge, 1 Seite
Hagen
 2008-05-02 00:39
#109076 #109076
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe ein "Web-Anwenung", welche wohl für Linux/Unix-Web-Server geschrieben wurde ... jedenfalls beginnt jedes Script mit der Zeile:
Code: (dl )
#!/usr/bin/perl -w


Jetzt möchte ich diese Anwendung (besteht aus mehreren Scripten) lokal unter Windows auf meiner XAMPP-Installation laufen lassen. Dafür müsste ich die erste Zeile entsprechend anpassen damit es läuft.

Code: (dl )
#!C:/PERL/BIN/PERL.EXE


Bei einem Script wäre das ja noch ganz gut machbar, aber wenn das mehr werden, ist diese Anpassung nur lästig. Gibt es dafür eine gute Lösung ... vor allem, wenn das ganze später wieder unter Linux laufen soll?

Gruß

Hagen
Gruß
Hagen
pktm
 2008-05-02 00:48
#109077 #109077
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Eine gute Lösung dafür habe cih nciht gefunden. Ich habe unter Windows die Dateizuordnung für .pl und .cgi auf Perl gesetzt, so dass der Shebang egal ist, und im Apache unter WIndows hatte ich es mal irgendwo in der Konfiiguration eingebaut.
Letzteres habe ich nicht mehr, da ich jetzt nur noch den Shebang für *nix-Systeme drin stehen habe. Das funktioniert dann auf beiden Systemen.

Grüße, pktm

EDIT: btw, mach mal das .exe hinten dran weg, das ist falsch. Außerdem musst du PERL klein schreiben.
http://www.intergastro-service.de (mein erstes CMS :) )
FIFO
 2008-05-02 00:58
#109078 #109078
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Am einfachsten ist m.E. tatsächlich, dem Indianer das Verwenden der Dateizuordnung aus der Registry vorzuschlagen, hier beschrieben in /xampp/apache/conf/httpd.conf:

# However, Apache on Windows allows either the Unix behavior above, or can
# use the Registry to match files by extention. The command to execute
# a file of this type is retrieved from the registry by the same method as
# the Windows Explorer would use to handle double-clicking on a file.
# These script actions can be configured from the Windows Explorer View menu,
# 'Folder Options', and reviewing the 'File Types' tab. Clicking the Edit
# button allows you to modify the Actions, of which Apache 1.3 attempts to
# perform the 'Open' Action, and failing that it will try the shebang line.
# This behavior is subject to change in Apache release 2.0.
#
# Each mechanism has it's own specific security weaknesses, from the means
# to run a program you didn't intend the website owner to invoke, and the
# best method is a matter of great debate.
#
# To enable the this Windows specific behavior (and therefore -disable- the
# equivilant Unix behavior), uncomment the following directive:
#
#ScriptInterpreterSource registry
#
# The directive above can be placed in individual <Directory> blocks or the
# .htaccess file, with either the 'registry' (Windows behavior) or 'script'
# (Unix behavior) option, and will override this server default option.
#

Alternativ kann man eine /usr/bin-Struktur incl. Perl im Windows-Verzeichnis/-laufwerk "nachbauen", so dass der Shebang immer funktioniert.
[edit] Vielleicht etwas missverständlich ausgedrückt: Das Verzeichnis \usr muss dann natürlich im root-Verzeichnis des Laufwerks liegen, auf dem auch XAMPP liegt, also z.B. H:\usr etc., das funktioniert auch auch einem Share (Netzlaufwerk)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
Hagen
 2008-05-02 10:52
#109087 #109087
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Prima, danke.

Die Dateizuordnung für .pl und .cgi auf Perl setzen und "#ScriptInterpreterSource registry" aktivieren war die Lösung.

Quote
EDIT: btw, mach mal das .exe hinten dran weg, das ist falsch. Außerdem musst du PERL klein schreiben.


Ja, habe ich gemacht ... hat aber auch damit funktioniert. Hatte die Zeile einfach so aus einem Foren-Beitrag kopiert, um es erstmal überhaupt zum laufen zu bekommen.
Gruß
Hagen
renee
 2008-05-02 10:57
#109088 #109088
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Windows ist da sehr "flexibel" (ob das immer gut ist, ist eine andere Sache)...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-05-02 11:48
#109090 #109090
Quote
ScriptInterpreterSource registry
funktioniert leider nicht immer korrekt. Und schon gar nicht mit verschiedenen Perl-Versionen zusammen!

FIFOs Vorschlag ist der wirklich flexible.

Ich habe folgendes unter Windows gemacht:
Apache ist bei mir unter X:\usr\local\apache installiert
Perl unter X:\usr\local\perl\56 ; X:\usr\local\perl\58 und X:\usr\local\perl\510
Ich habe hardlinks bspw. von X:\usr\local\perl\58\bin\perl.exe auf X:\usr\bin\perl.exe und X:\bin\perl.exe und X:\usr\local\bin\perl.exe gelegt.
Damit kann ich als Shebang jetzt unter Apache folgende verwenden:
#!/usr/bin/perl
#!/bin/perl
#!/usr/local/bin/perl
<< >> 6 Einträge, 1 Seite



View all threads created 2008-05-02 00:39.