Welches von /usr/bin/perl oder /usr/local/bin/perl sollte verwendet werden?

Welches von /usr/bin/perl oder /usr/local/bin/perl sollte verwendet werden?

Wenn beides auf einem System verfügbar ist /usr/bin/perl, /usr/local/bin/perlwelches sollte ich verwenden?

Antwort1

Es kommt darauf an: Auf manchen Systemen, z. B. bei BSD-Paketen, /usr/local/binkann dies das Verzeichnis sein, in dem Pakete ausführbare Dateien installieren. In diesem Fall wäre es neuer (und vielleicht besser), aber /usr/bin/perlstabiler.

Sie können perl -Vsehen, welche Version eine neuere Versionsnummer hat. Manchmal /usr/local/binist der Inhalt von (auf Mehrbenutzersystemen) nicht wirklich neuer.

Der übliche Kompromiss besteht darin, den Benutzer entscheiden zu lassen, indem er envin der Shebang/Hashbang-Zeile (aber auch hier gilt:Wegto envkann je nach System unterschiedlich sein). Die Shebang-Zeile bezieht sich auf die erste Zeile eines Skripts, die wie folgt aussehen kann:

#!/usr/bin/perl
#!/usr/bin/perl -w
#!/usr/bin/env perl

Die ersten beiden geben das Verzeichnis an, aus dem Perl ausgeführt werden soll. Als Bonus ermöglicht diese Form die Übergabe einer Option, z. B. -w(zum Einschalten von Warnungen). Die letzte Zeile verwendet das envProgramm, um das erste Vorkommen von auszuwählen, indem es die in der Umgebungsvariable perldes Benutzers aufgeführten Verzeichnisse durchsucht .PATH

Es ist auch möglich, ein Skript wie dieses auszuführen:

perl myscript

was (wie ) der Shell mitteilt, das erste Vorkommen von aus den in aufgelisteten Verzeichnissen envauszuwählen .perlPATH

Eine explizite

./perl myscript

überschreibt natürlich das PATH. Aber die meisten Leute verwenden Perl-Skripte in Skripten mit Shebang-Zeilen (Perl-Einzeiler sind eine andere Sache).

Weiterführende Literatur:

Antwort2

Für wen ist es gedacht? Wenn Sie allein sind, spielt es keine Rolle, solange beide Perl-Versionen neu genug sind. Ist es für eine Arbeitsumgebung gedacht? Wenn ja, prüfen Sie Ihre Bereitstellungsrichtlinien, da diese möglicherweise die Antwort enthalten. Wenn es für die Verteilung an die breite Öffentlichkeit gedacht ist, würde ich empfehlen, je nach Pakettyp zu variieren. Verwenden Sie insbesondere /usr/bin/perl für Debs (gemäß den Debian-Richtlinien) und RPMs (da Red Hat die Installation von RPMs in /usr/local ausdrücklich verbietet), aber /usr/bin/env Perl für Tar- und Shar-Pakete, da dies die beste Chance hat, auf beliebigen Unix-Computern zu funktionieren.

verwandte Informationen