システム上で両方/usr/bin/perl
が使用可能な場合、どちらを使用すればよいですか?/usr/local/bin/perl
答え1
状況によります。BSD パッケージングなどの一部のシステムでは、/usr/local/bin
パッケージが実行ファイルをインストールするディレクトリになる場合があります。その場合、より新しい (そしておそらくより優れた) ディレクトリになりますが、/usr/bin/perl
より安定します。
を使用すると、バージョン番号が新しいものを確認できます。 (マルチユーザー システムでは)perl -V
の内容が実際には新しいとは限りません。/usr/local/bin
通常の妥協策は、ユーザーに決定を任せることです。env
シェバン/ハッシュバン行で(ただし、パス(システムによって異なる場合がenv
あります)。シェバン行はスクリプトの最初の行を指し、次のいずれかのようになります。
#!/usr/bin/perl
#!/usr/bin/perl -w
#!/usr/bin/env perl
最初の 2 つは、Perl を実行するディレクトリを指定します。ボーナスとして、この形式では、たとえば-w
(警告をオンにするために使用) などのオプションを渡すことができます。最後の行では、プログラムを使用して、ユーザーの環境変数にリストされているディレクトリを検索し、env
の最初の出現を選択します。perl
PATH
次のようなスクリプトを実行することも可能です。
perl myscript
これは ( と同様に) 、 にリストされているディレクトリから のenv
最初の出現を選択するようにシェルに指示します。perl
PATH
明示的な
./perl myscript
もちろん、 は を上書きしますPATH
。しかし、ほとんどの人が Perl スクリプトを使用する方法は、シェバン行を含むスクリプトです (Perl ワンライナーは別の問題です)。
参考文献:
- /usr/bin/env perl - クエリ、シェバンラインを参照
- Linux 上の /usr/bin と /usr/local/bin
- パッケージ(7)、FreeBSDパッケージシステム
/usr/local/bin
答え2
誰向けですか? あなただけなら、両方のバージョンの Perl が十分に新しい限り問題ありません。仕事環境向けですか? そうであれば、デプロイメント ポリシーを確認してください。答えがあるかもしれません。一般向けに配布する場合は、パッケージの種類に応じて変更することをお勧めします。具体的には、debs (debian ガイドラインによる) および rpm (Red Hat は rpm による /usr/local へのインストールを明示的に禁止しているため) の場合は /usr/bin/perl を使用しますが、tar および shar パッケージの場合は /usr/bin/env perl を使用します。これは、ランダムな UNIX コンピューターで動作する可能性が高いためです。