Wie richte ich Strawberry Perl in MSYS ein?

8

Ich habe Strawberry Perl und msys Perl 5.6 entfernt.

Nun ruft perl Strawberry auf (wegen PATH env), aber wie ordne ich den Befehl perl in .pl oder andere Perl-Skriptdateien mit #!/bin/perl oder #!/usr/bin/perl shebang lines?

Ich habe daran gedacht, einen Hardlink zu perl.exe in msys / bin zu erstellen oder die gesamte Strawberry in das msys -Verzeichnis einzufügen, aber Ich bin mir nicht sicher.

    
twinkletoes 04.12.2009, 10:42
quelle

3 Antworten

3

Die Lösung besteht darin, innerhalb von MSYS einen Symlink zur ausführbaren Strawberry Perl-Datei zu erstellen. Tipp des Hutes zu smaudet für seine Eingabe :

Entfernen oder benennen Sie zuerst die ausführbaren Perl-Dateien, mit denen die MSYS-Installation geliefert wurde (falls vorhanden) (was das OP bereits getan hat); z.B.:

%Vor%

Erstellen Sie an dieser Stelle einen Symlink zu Strawberry Perls ausführbarer Datei:

%Vor%

Sobald der sym_link /usr/bin/perl vorhanden ist, werden bestehende Skripte mit den Shebang-Zeilen #!/usr/bin/perl und #!/bin/perl wieder funktionieren (letzteres funktioniert auch, weil /bin und /usr/bin im Grunde die selbe Stelle in MSYS sind) .

Beachten Sie, dass Skripte, die mit der flexibleren Shebang-Zeile #!/usr/bin/env perl do not geschrieben wurden, dies benötigen, weil env direkt Strawberry Perls perl.exe im Pfad findet .

Einige Hintergrund :

Unix-Emulationsumgebungen wie MSYS und Cygwin beachten nicht die %PATHEXT% Variable von Windows, um zu bestimmen, mit welcher ausführbaren Datei eine (nicht-binäre) Datei aufgerufen werden soll. Mit anderen Worten: Dateinamenserweiterungen haben dort keine Bedeutung bezüglich der Ausführung .

Stattdessen gehen sie nur darauf ein, ob die Datei eine Shebang-Linie hat :

  • Wenn es einen gibt, wird die in der shebang-Zeile angegebene ausführbare Datei verwendet.
  • Wenn keine vorhanden ist, wird die standardmäßige (POSIX-ähnliche) Shell /bin/sh verwendet.
    • Wenn Sie versuchen, *.bat oder *.cmd direkt aufzurufen, schlägt fehl, weil sie keine Unix-Shebang-Zeile haben und daher von /bin/sh statt von cmd.exe ausgeführt werden.

Anders als in Windows funktioniert dies auch mit (ausführbaren) Dateien, die überhaupt keine Dateinamenerweiterung haben.

    
mklement0 22.07.2015 22:49
quelle
0

Dies funktioniert wunderbar auf der Windows-Seite des Computers, auf der MSYS-Seite müssen Sie möglicherweise

  • Überprüfen Sie die PATH-Umgebungsvariable und beheben Sie, dass der Erdbeer-Perl-Zugriffspfad hinzugefügt wird

  • Überprüfen Sie die Skripte auf den vollständigen Pfad in der Shebang-Zeile (#! / usr / bin / perl). Diese Pfade, die in msys absolut sind, sind in der Tat relativ zum msys-Installationsverzeichnis in Windows. Sie müssen möglicherweise Ihre Erdbeere perl installieren, um zu passen oder die # zu ändern! Linie

Im letzteren Fall wäre meine Empfehlung, etwas wie: #!env perl zu verwenden, das die Umgebung für den Perl-Interpreter überprüft und die Last des Umgangs mit / cygdrive / c / my / windows / path / not / visible / von entlastet / msys / sonst

    
user407662 31.07.2010 21:02
quelle
0

Der richtige Shebang wäre z. %Code%. Möglicherweise möchten Sie jedoch Skripts explizit mit Perl ausführen, anstatt sich auf den Shebang zu verlassen, z. #!"C:/strawberry/perl/bin/perl.exe" oder perl script.pl

Beachten Sie, dass Strawberry Perl den Shebang nicht für seine eigenen Skripts verwendet, z. B. perl "C:\strawberry\perl\bin\cpan" und cpan . Fehler gemeldet bei Ссылка

    
Colonel Panic 20.01.2013 21:10
quelle

Tags und Links