
Wenn beides auf einem System verfügbar ist /usr/bin/perl
, /usr/local/bin/perl
welches sollte ich verwenden?
Antwort1
Es kommt darauf an: Auf manchen Systemen, z. B. bei BSD-Paketen, /usr/local/bin
kann dies das Verzeichnis sein, in dem Pakete ausführbare Dateien installieren. In diesem Fall wäre es neuer (und vielleicht besser), aber /usr/bin/perl
stabiler.
Sie können perl -V
sehen, welche Version eine neuere Versionsnummer hat. Manchmal /usr/local/bin
ist der Inhalt von (auf Mehrbenutzersystemen) nicht wirklich neuer.
Der übliche Kompromiss besteht darin, den Benutzer entscheiden zu lassen, indem er env
in der Shebang/Hashbang-Zeile (aber auch hier gilt:Wegto env
kann 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 env
Programm, um das erste Vorkommen von auszuwählen, indem es die in der Umgebungsvariable perl
des 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 env
auszuwählen .perl
PATH
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:
- /usr/bin/env Perl - Abfrage, bezogen auf die Shebang-Linie
- /usr/bin vs. /usr/local/bin unter Linux
- Paket(7), FreeBSD-Paketsystem mit
/usr/local/bin
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.