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.
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 :
/bin/sh
verwendet.
*.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.
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
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 Ссылка
Tags und Links perl strawberry-perl msys